gpt4 book ai didi

java - Netbeans - .properties 文件默认编码 |奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 12:41:09 25 4
gpt4 key购买 nike

我有问题 .properties Netbeans 中的文件。我使用这些文件是为了在我的应用程序中提供一些本地化的字符串。

情况1

如果我创建一个新的 .properties Netbeans 中的文件( New -> Properties File )和我,但有一些行:

INFO_OEFFNEN=Открыть информацию
FILE=Файл
SPRACHE=Язык

一切正常,所有字符串都被正确翻译:

enter image description here

但是,如果我通过 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 中,我可以看到一些非常奇怪的东西:

enter image description here

案例3

我的做法与案例 2 相同,但我在 Netbeans 中设置了 use project encoding 的“ .properties”属性文件到 true .

现在在 Netbeans 编辑器中,我看到了正确的文本(但 100% 被 SVN 标记为“已修改”)。当我启动 App 字符串时,如下所示:

enter image description here

题:

我假设 默认编码 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-pluginhttps://mvnrepository.com/artifact/org.codehaus.mojo/native2ascii-maven-plugin

其他开发人员正在使用 Netbeans(像我一样)和 Netbeans 完全符合 Oracle 规范 .所以 Netbeans 默认在 ISO 8859-1 中写入属性文件。

所以,有两种可能:
  • 以 ISO 8859-1 编码编写您的属性文件(使用 Netbeans 自动完成)。
  • 或者,以 UTF-8 编码(默认使用 Eclipse 或 Notepad++ 完成)编写您的属性文件,然后将其转换为 ISO 8859-1。避免使用其他工具将 ISO 8859-1 重新转换为 UTF-8(SVN、GIT、其他脚本......)。
  • 关于java - Netbeans - .properties 文件默认编码 |奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764904/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com