我有问题 .properties
Netbeans 中的文件。我使用这些文件是为了在我的应用程序中提供一些本地化的字符串。
情况1
如果我创建一个新的 .properties
Netbeans 中的文件( New -> Properties File
)和我,但有一些行:
INFO_OEFFNEN=Открыть информацию
FILE=Файл
SPRACHE=Язык
一切正常,所有字符串都被正确翻译:
但是,如果我通过 Notepad++ 打开此文件,我会看到以下内容(Notepad++ 识别的编码可能不正确,为
UTF-8
):
INFO_OEFFNEN=\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e
FILE=\u0424\u0430\u0439\u043b
SPRACHE=\u042f\u0437\u044b\u043a
案例二
如果我创建一个
UTF-8
编码
.properties
包含以下行的 Notepad++ 文件:
INFO_OEFFNEN=Открыть информацию
FILE=Файл
SPRACHE=Язык
并在 Netbeans 中打开它我看到了这个:
INFO_OEFFNEN=ÐÑкÑÑÑÑ Ð¸Ð½ÑоÑмаÑиÑ
FILE=Файл
SPRACHE=ЯзÑк
在 GUI 中,我可以看到一些非常奇怪的东西:
案例3
我的做法与案例 2 相同,但我在 Netbeans 中设置了
use project encoding
的“
.properties
”属性文件到
true
.
现在在 Netbeans 编辑器中,我看到了正确的文本(但 100% 被 SVN 标记为“已修改”)。当我启动 App 字符串时,如下所示:
题:
我假设 默认编码 Netbeans 创建的属性文件的数量是 不是 UTF-8 .在这种情况下,如何检查 Netbeans 默认使用哪种编码?
我想编写一个简短的 Java 应用程序,它读取
.properties
文件(由 Netbeans 创建),添加或替换一些行并创建一个应该由 Netbeans 正确读取的新文件。我应该在
InputStreamReader
中使用哪种编码?
请给我 一些提示 关于这个问题。我对 Netbeans 中不同默认编码的假设是否正确?我恐怕我不明白这里的一些重要问题。
一些附加信息:
- Netbeans project encoding: UTF-8
- Help->About:
*NetBeans IDE 8.1 (Build 201510222201)
*Java: 1.8.0_92; Java HotSpot(TM) 64-Bit Server VM 25.92-b14
*System: Windows 7 version 6.1 running on amd64; UTF-8; de_DE (nb)
请您参考如下方法:
情况 1 中的属性文件是正确的。
根据 Oracle 的说法,属性文件以 ISO 8859-1 字符编码写入和读取。
见 https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html
The load(Reader) / store(Writer, String) methods load and store properties from and to a character based stream in a simple line-oriented format specified below. The load(InputStream) / store(OutputStream, String) methods work the same way as the load(Reader)/store(Writer, String) pair, except the input/output stream is encoded in ISO 8859-1 character encoding.
我团队中的一些开发人员正在使用 Eclipse,它并不总是自动将属性文件转换为 ISO 8859-1。因此,可能会出现显示字符错误。我们使用了一个名为 的 Maven 插件。 native2ascii-maven-plugin 将这些文件转换为 ISO 8859-1 编码。见 https://github.com/mojohaus/native2ascii-maven-plugin和 https://mvnrepository.com/artifact/org.codehaus.mojo/native2ascii-maven-plugin
其他开发人员正在使用 Netbeans(像我一样)和 Netbeans 完全符合 Oracle 规范 .所以 Netbeans 默认在 ISO 8859-1 中写入属性文件。
所以,有两种可能: