我有一个属性文件,其中包含一些葡萄牙语属性,使用一些重音字符。从第三方库(Controls FX Dialogs)读取这些属性。但不知何故,重音字符被错误的编码读取(仅在MS Windows上测试)。
这就是我在属性文件中的内容:
dlg.yes.button = Sim
dlg.no.button = Não
这就是它在正在运行的应用上的外观:
我的所有项目文件(包括java源和属性文件)都以UTF-8编码。我只能在Windows上测试它,所以我认为它有一些与Windows默认编码相关的东西(Cp1252)。我还尝试使用带有-Dfile.encoding = UTF8选项的UTF8编码来运行应用程序,但问题仍然存在
知道为什么会这样吗?
答案 0 :(得分:1)
属性文件始终被视为ISO-8859-1文件。来自documentation:
输入流采用load(Reader)中指定的简单面向行的格式,并假设使用ISO 8859-1字符编码;这就是每个字节都是一个Latin1字符。
您需要将文件保存为ISO Latin-1,或使用\u
转义写入所有非ASCII字符。