计算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]
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!
】
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]
在不断奉献中谋求生存发展、打造自己的优秀品质,用人性最本质最动人的一面“营销”自己!
相关文章推荐
- SQL编程之高级查询(子查询)以及注意事项
- Android开发之Socket编程以及注意事项
- 【转】二叉树的实现及操作以及指针使用和删除注意事项
- ionic热更新的实现以及引导用户下载新版应用功能实现和注意事项
- 用Java实现判断链表是否有环,环的大小,环的长度以及计算链表的长度
- strlen的2种实现方式以及注意事项
- golang接口的实现以及注意事项。
- Object-c------类的声明与实现以及注意事项
- HttpFileCollection 多文件上传的实现以及需要注意的事项
- SQL编程之高级查询(子查询)以及注意事项
- SQL编程之高级查询(子查询)以及注意事项
- thinkphp 文件下载实例 实现以及注意事项
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(二) 之 ChatServer搭建,连接服务器,以及注意事项。
- 索引列上计算引起的索引失效及优化措施以及注意事项
- 关于手机(extjs ,touch,打包)编程的那点事情,编程,打包,以及注意事项,以及,多选selectfield
- RTX发送消息提醒实现以及注意事项
- Android开发之Socket编程以及注意事项
- 编程实现计算字符串的长度
- 【并行计算-CUDA开发】GPGPU OpenCL/CUDA 高性能编程的10大注意事项
- epoll 编程注意事项以及参数查看