我正在编写一个示例测试应用程序,其主要功能是修改一些文本文件(无论哪种修改都无关紧要)。这些测试文件通常采用txt格式。问题是,这些文件可以包含英文,德文,波兰文,中文,阿拉伯文等文本。
我的问题是,在编码内容方面我应该注意什么。我想确保,该应用适用于它遇到的任何角色。
你能给我一些链接吗?我会发现这些链接在读取/写入文件时会有用吗?
我正在用Java编写这个应用程序。
答案 0 :(得分:4)
我想确保该应用适用于其遇到的任何字符。
这很好,只要你知道文件的编码。请务必注意,文件的编码与文件中文本的语言非常不同。例如,完全相同的字符可以用UTF-8和UTF-16表示。
有可能在文件的编码中启发式猜测,但如果您可以控制它,则要求所有输入文件使用相同的编码会更好(IMO)。 。或允许用户指定编码。如果您可以控制编码,我通常会建议使用UTF-8。
答案 1 :(得分:2)
如果你可以控制它,你需要UTF-8。但它不仅仅是你翻转的开关--Java喜欢平台默认编码和几乎无处不在的UTF-8的古代8位编码。
什么时候需要使用编码?
归结为需要编码的内存中的任何字符串(例如,打印到控制台,写入文件或发送数据库查询)以及需要解码的任何内存(读取控制台,文件时) ,http请求,接收数据库结果等)。
如果在这些情况下没有指定编码,则隐式使用编码。总是。隐式选择的编码通常不是您想要的,甚至会根据程序的运行位置而改变。
Java几乎没有任何隐式编码重载并没有帮助,它似乎总是更容易使用。