属性文件中的属性以错误的编码方式读取

时间:2015-07-01 20:19:45

标签: java encoding javafx controlsfx

我有一个属性文件,其中包含一些葡萄牙语属性,使用一些重音字符。从第三方库(Controls FX Dialogs)读取这些属性。但不知何故,重音字符被错误的编码读取(仅在MS Windows上测试)。

这就是我在属性文件中的内容:

dlg.yes.button = Sim
dlg.no.button = Não

这就是它在正在运行的应用上的外观: enter image description here

我的所有项目文件(包括java源和属性文件)都以UTF-8编码。我只能在Windows上测试它,所以我认为它有一些与Windows默认编码相关的东西(Cp1252)。我还尝试使用带有-Dfile.encoding = UTF8选项的UTF8编码来运行应用程序,但问题仍然存在

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

属性文件始终被视为ISO-8859-1文件。来自documentation

  

输入流采用load(Reader)中指定的简单面向行的格式,并假设使用ISO 8859-1字符编码;这就是每个字节都是一个Latin1字符。

您需要将文件保存为ISO Latin-1,或使用\u转义写入所有非ASCII字符。