计算UCS2编码的长度以及注意事项(C编程实现)

【小蜗牛清心之作
 
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 protected]
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!

你可能感兴趣的:(编码,解码,PDU,短信,ucs2)