您的位置:首页 > 编程语言

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

2009-04-28 10:01 399 查看
【小蜗牛清心之作



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]snailwarrior@qq.com[/email]
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  短信 编码 解码 PDU UCS2