首页 新闻 赞助 找找看

为什么中文字符被编码成了两个Unicode

0
悬赏园豆:200 [已解决问题] 解决于 2016-06-06 15:32

我用jsonnet工具,处理json,里面有中文,原来的字符是:{a:\"李\"},处理后变成:

{
"a": "\u00c0\u00ee"
}

在网上查了,”李“的Unicode编码是\u674e,为什么变成两个16进制数了??

OOLi的主页 OOLi | 初学一级 | 园豆:163
提问于:2016-06-02 20:13
< >
分享
最佳答案
1

jsonnet工具 具体有下载地址吗

收获园豆:200
Yu | 专家六级 |园豆:12980 | 2016-06-02 20:35

http://jsonnet.org/

这个是官网的,在linux上汉字是没问题的,

https://github.com/tyler-elric/jsonnet.git

这个项目提供了windows平台版本,我在这个平台用vc编译后拿到exe文件。

http://files.cnblogs.com/files/hongyin163/jsonnet.rar

执行命令:jsonnet -e "{a:\"李\"}"

OOLi | 园豆:163 (初学一级) | 2016-06-03 07:38

@OOLi: 考虑换个命令行试试,比如powershell。另外也可以考虑换个工具。

幻天芒 | 园豆:37175 (高人七级) | 2016-06-03 08:34

@OOLi: 可能在WINDOW读取时就出现乱码,才导致错误输出。在linux输出的是咋样的?,两个系统的语言都是中文?

Yu | 园豆:12980 (专家六级) | 2016-06-03 08:37

@OOLi: 它是按西欧的编码方式读取:{a:"Àî"},才导致这样输出{"a": "\u00c0\u00ee"}

Yu | 园豆:12980 (专家六级) | 2016-06-03 08:49
其他回答(5)
0

Json.Net? 贴下实际代码。

幻天芒 | 园豆:37175 (高人七级) | 2016-06-02 21:51

不是Json.net,是http://jsonnet.org/

windows版本下载:

http://files.cnblogs.com/files/hongyin163/jsonnet.rar

支持(0) 反对(0) OOLi | 园豆:163 (初学一级) | 2016-06-03 07:39
0

那a怎么成name了啊

jello chen | 园豆:7306 (大侠五级) | 2016-06-02 22:38

 编辑错了,改过来了

支持(0) 反对(0) OOLi | 园豆:163 (初学一级) | 2016-06-03 07:39

@OOLi: jsonnet编译的字符集是什么

支持(0) 反对(0) jello chen | 园豆:7306 (大侠五级) | 2016-06-03 09:13

@OOLi:事实上,你将{a:"李"}复制到nodepad++,然后,格式--以UTF-8格式编码,就明白了

支持(0) 反对(0) jello chen | 园豆:7306 (大侠五级) | 2016-06-03 09:46
0

怕是你弄错了吧

CodeHsu | 园豆:5468 (大侠五级) | 2016-06-02 22:55

 没,linux版本是可以的,只是windows版本有这个问题

http://jsonnet.org/

http://files.cnblogs.com/files/hongyin163/jsonnet.rar

支持(0) 反对(0) OOLi | 园豆:163 (初学一级) | 2016-06-03 07:40

@OOLi: 这是字符编码问题

支持(0) 反对(0) CodeHsu | 园豆:5468 (大侠五级) | 2016-06-03 09:41
1

windows版本处理字符串时把汉字拆分成两个字符,英文字符没有问题,汉字是采用gbk编码,李的gbk编码是c0ee,所以变成两个两个\u00c0\u00ee

OOLi | 园豆:163 (初学一级) | 2016-06-06 15:31
0

“李”这个字的编码:

ASCII 编码:c0 ee

Unicode: 4e 67

UTF8:e6 9d 8e

关键是你解析它的时候,要指定好编码。

hoodlum1980 | 园豆:559 (小虾三级) | 2016-06-08 17:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册