【小蝸牛清心之作】
UCS2編碼在發送短信時候經常用到,如果發送的是純ASCII字元的短信,采用7BIT壓縮編碼最大一次可以發送160個ASCII,但是如果想發送中文的話,隻能采用UCS2編碼了,一條短信最大可以發送70個中文(或70個中英文、數字混合短信,比如,如果有1個中文,後面可以再有69個中文,或者69個英文、數字)。
中文、普通ASCII的UCS2編碼都是要占用兩個位元組,但是,ASCII的UCS2編碼有一個位元組為0x0,導緻無法用 strlen() 函數來計算UCS2編碼的長度,我是這麼計算UCS2編碼長度的:
// 計算出UCS2編碼的長度并傳回長度
int ucs2Count(const unsigned char *pSrc)
{
int i;
for (i = 0; pSrc[i]+pSrc[i+1] != 0; i += 2);
//注意上面有個";"
return i;
}
pSrc這裡存放着已經UCS2編碼好的位元組串,這裡需要注意的是,我們必須有 n*2+2 位元組的空間來存儲UCS2位元組串,這裡的 n 是需要進行UCS2編碼的字元個數,中文當作一個字元,英文字母、數字也是一個字元。并且,我們在編碼轉換的時候,需要先把 n*2+2 位元組的空間清零,可以使用函數 bzero(pSrc, n*2+2) 或者 memset(pSrc, 0, n*2+2)。
溫馨提示一下,在Linux下各種編碼轉換,可以使用 iconv() 函數哦~
------------------------------------------------------------------------------------------
趙小蝸牛
QQ: 755721501
E-mail: [email][email protected][/email]
在不斷奉獻中謀求生存發展、打造自己的優秀品質,用人性最本質最動人的一面“營銷”自己!