首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rest json和属性文件之间的Java编码转换

rest json和属性文件之间的Java编码转换
EN

Stack Overflow用户
提问于 2017-01-20 07:44:17
回答 1查看 617关注 0票数 0

我的属性文件中有一个拉丁文1字符:

代码语言:javascript
运行
复制
Privé vervoer

属性文件使用UTF-8存储.这导致了问题,并以一种混乱的方式返回到UI(单独的js应用程序)。我明白为什么会这样。默认情况下,属性文件被视为ISO-8859-1。因此,正如通常建议的那样,我将é改为它的Unicode转义表示- \u00E9。现在,一切都很有魅力,但我还是很困惑。Java将把这个字符当作编码的ISO-8859-1。这很酷。但是当这个字符串返回到UI时,它应该是UTF-8编码的,因为这是UI所期望的(Content-Type: "application/json; charset=utf-8"charset="utf-8"元标记)。

我仍然无法理解从ISO-8859-1到UTF-8转换发生的时间.

如果这个字符是Unicode转义的,是否需要它?转义字符可能总是根据底层应用程序/OS正确显示吗?

我的栈: Mule、Java 8、Spring 4、基于角度的UI和中间的nodejs网关.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-20 08:02:55

字符编码包括将字符转换为字节序列。这是必要的,当你写到一个文件,或网络。

类似地,当您从文件或网络中读取字符时,您实际上读取了字节,并且字节序列被解码为字符。

属性类在从文件中读取时,期望该文件包含ISO_8859_1编码字符,即通过用ISO_8859_1编码字符获得的字节。因此,它从文件中读取字节,使用ISO_8859_1对它们进行解码,并将它们存储为字符串的键值对(其中包含字符)。

当您将这些字符写入网络时,这些字符将再次转换为字节,您当然不会被迫使用与属性文件相同的编码。因此,如果您愿意的话,可以选择UTF_8。

对于属性文件,ISO_8859_1是一个愚蠢的(IMO)选择,特别是考虑到它们用于资源包,包含以多种语言翻译的消息。实际上,ISO_8859_1只支持256个字符(不是所有可打印的),而不支持整个Unicode集。乌特夫-8应该是个更好的选择。您的特定字符(é)是由ISO_8859_1支持的,因此您实际上不必转义它。但是,如果您在文件中存储了西里尔字母、阿拉伯语或其他类型的非莱克字符,那么您就必须将这些字符转义为\uxxxx字符序列(它们本身只包含可以用ISO_8859_1编码的字符:\u和数字)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41758466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档