当前位置: 技术问答>linux和unix
UTF-8转utf-8问题
来源: 互联网 发布时间:2016-11-03
本文导语: 最近在做GPRS,采用PDU编码发送中文短信时,源程序短信内容编码为UTF-8经过iconv库转换为utf-8编码后,用十六进制打印出来,发现如果字符里面有0,它就屏蔽掉了,不知道怎么解决? 例如: (UTF-8)短信内...
最近在做GPRS,采用PDU编码发送中文短信时,源程序短信内容编码为UTF-8经过iconv库转换为utf-8编码后,用十六进制打印出来,发现如果字符里面有0,它就屏蔽掉了,不知道怎么解决?
例如:
(UTF-8)短信内容为:主人家里的防盗门不见了
(UTF_16转换后十六进制显示为:4e3b 4eba 5bb6 91cc 9632 76dc 95e8 4ed 89c1 4e86
本应该为: 4E3B 4EBA 5BB6 91CC 9632 76D7 95E8 4E0D 89C1 4E86
发现那个“不”字编码为1个半字节,这样也导至短信发不出去,不知如果解决?
例如:
(UTF-8)短信内容为:主人家里的防盗门不见了
(UTF_16转换后十六进制显示为:4e3b 4eba 5bb6 91cc 9632 76dc 95e8 4ed 89c1 4e86
本应该为: 4E3B 4EBA 5BB6 91CC 9632 76D7 95E8 4E0D 89C1 4E86
发现那个“不”字编码为1个半字节,这样也导至短信发不出去,不知如果解决?
|
转换后,16进制输出时,用了sprintf("%d" .. ??
试试sprintf("%02d" ...
试试sprintf("%02d" ...
|
sprintf(content,"%02x",out[i]);
楼主最好写代码的时候用snprintf,这样比较安全。
楼主最好写代码的时候用snprintf,这样比较安全。
|
用了sprintf("%d" .. ??
试试sprintf("%02d" ...
用strlen()来计算长度,这种方式应该是不可靠的
试试sprintf("%02d" ...
用strlen()来计算长度,这种方式应该是不可靠的
|
UTF-8经过iconv库转换为utf-8 有返回的长度呀
LZ想得到字符个数,还是字节长度?
LZ想得到字符个数,还是字节长度?
|
晕ing ...
如果是gbk编码,每个汉字都是2个字节的
对于unicode编码的串,使用strlen()来计算长度,这种方式应该是不可靠的
没有其它方式来获取这个长度吗?
如果是gbk编码,每个汉字都是2个字节的
对于unicode编码的串,使用strlen()来计算长度,这种方式应该是不可靠的
没有其它方式来获取这个长度吗?