1

我正在编写一个示例测试应用程序,其主要功能是修改一些文本文件(不管什么样的修改)。这些测试文件通常为 txt 格式。问题是,这些文件可能包含英语、德语、波兰语、中文、阿拉伯语等文本。

我的问题是,在编码方面我应该注意什么。我想确保该应用程序适用于它遇到的任何角色。

您能否给我一些链接,我会觉得这些链接对这些编码内容有用(在读取/写入文件时)?

我正在用 Java 编写这个应用程序。

4

2 回答 2

4

我想确保该应用程序适用于它遇到的任何角色。

没关系,只要您知道文件的编码即可。需要注意的是,文件的编码与文件中文本的语言非常不同。例如,完全相同的字符可以用 UTF-8 和 UTF-16 表示。

可以启发式地猜测文件的编码,但最好(IMO)要求所有输入文件使用相同的编码,如果你可以控制的话......或者允许用户指定编码。如果您可以控制编码,我通常会推荐 UTF-8。

于 2013-04-17T05:46:48.273 回答
2

如果你可以控制它,你想要 UTF-8。但这不仅仅是您翻转的开关 - Java 几乎在任何地方都喜欢平台默认编码和古老的 8 位编码而不是 UTF-8。

什么时候需要使用编码?

它归结为需要编码的任何从内存中出来的字符串(例如,当打印到控制台、写入文件或发送数据库查询时)以及需要解码的任何进入内存的内容(当读取控制台、文件、http 请求时) ,例如接收数据库结果等)。

如果在这些情况下未指定编码,则会隐式使用编码。总是。隐式选择的编码通常不是您想要的,甚至会根据程序运行的位置而改变。

Java 对几乎任何东西都有隐式编码重载并没有帮助,而且它似乎总是更容易使用的重载。

于 2013-04-17T06:03:58.757 回答