| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5904 人关注过本帖
标题:我用C程序怎么把汉字字串转换成十六进制形式的字符串
取消只看楼主 加入收藏
elesun8
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-12-29
结帖率:42.86%
收藏
已结贴  问题点数:2 回复次数:2 
我用C程序怎么把汉字字串转换成十六进制形式的字符串
我用C程序怎么把汉字字串转换成十六进制形式的字符串

例如:我输入汉字“四川省成都市双流县”得到字符串“56DB5DDD7701621090FD5E0253CC6D4153BF”(此为unicode UTF-8编码)

*******************汉字转unicode编码软件***************************
输入:四川省成都市双流县
输出:56DB 5DDD 7701 6210 90FD 5E02 53CC 6D41 53BF
*******************我现在用C语言程序实现此功能*********************
编译环境为Linux redhat gcc4.3.2

char geo_addr_utf8[100]="四川省成都市双流县";//为unicode UTF-8格式的汉字编码,geo_addr_utf8是从xml网页文件中提取出来的,内容是正确的。

strlen(geo_addr_utf8) = 27;//为什么长度为27个bytes,一个汉字两个字节,9个汉字应该是18个bytes才对?

for(i=0;i<strlen(geo_addr_utf8);i++)
{printf("%d,",geo_addr_utf8[i]);}printf("\n");
显示为:
-27,-101,-101,-27,-73,-99,-25,-100,-127,-26,-120,-112,-23,-125,-67,-27,-72,-126,-27,-113,-116,-26,-75,-127,-27,-114,-65,


for(i=0;i<strlen(geo_addr_utf8);i++)
{printf("0x%02X,",geo_addr_utf8[i]);}printf("\n");
显示为:
0xFFFFFFE5,0xFFFFFF9B,0xFFFFFF9B,0xFFFFFFE5,0xFFFFFFB7,0xFFFFFF9D,0xFFFFFFE7,0xFFFFFF9C,0xFFFFFF81,0xFFFFFFE6,0xFFFFFF88,0xFFFFFF90,0xFFFFFFE9,0xFFFFFF83,0xFFFFFFBD,0xFFFFFFE5,0xFFFFFFB8,0xFFFFFF82,0xFFFFFFE5,0xFFFFFF8F,0xFFFFFF8C,0xFFFFFFE6,0xFFFFFFB5,0xFFFFFF81,0xFFFFFFE5,0xFFFFFF8E,0xFFFFFFBF,
为什么显示出来都是四字节的十六进制,char为单字节数字吧


for(i=0;i<strlen(geo_addr_utf8);i++)
{printf("%C,",geo_addr_utf8[i]);}printf("\n");
显示为:
?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,,?,?,?,?,?,
这是怎么回事?

如何实现输入为geo_addr_utf8输出为geo_addr_HexString“56DB5DDD7701621090FD5E0253CC6D4153BF”

顺便问一下:Linux gcc默认编译的汉字为GB2312吧?
搜索更多相关主题的帖子: 汉字编码 成都市 十六进制 四川省 字符串 
2015-01-21 12:17
elesun8
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-12-29
收藏
得分:0 
UTF-8编码是三字节,UTF-16编码是两字节

我在网上找的软件 汉字转UTF-8编码,显示“四川省成都市双流县” 为 56DB 5DDD 7701 6210 90FD 5E02 53CC 6D41 53BF
网上这些原来是错的哦


顺便问一下:Linux gcc默认编译的汉字为GB2312吧?
2015-01-22 19:10
elesun8
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2014-12-29
收藏
得分:0 
对于“四川省成都市双流县”
GBK编码是  CBC4 B4A8 CAA1 B3C9 B6BC CAD0 CBAB C1F7 CFD8

是不是GBK编码和GB2312编码是一样的,也是

GB23121  CBC4 B4A8 CAA1 B3C9 B6BC CAD0 CBAB C1F7 CFD8
2015-01-22 19:12
快速回复:我用C程序怎么把汉字字串转换成十六进制形式的字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017057 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved