gpt4 book ai didi

Eclipse 中的 Java 属性 UTF-8 编码

转载 作者:IT老高 更新时间:2023-10-28 20:32:54 25 4
gpt4 key购买 nike

我最近不得不将我正在开发的 webapp 的编码从 ISO-xx 切换到 utf8。一切都很顺利,除了属性文件。我在 eclipse.ini 中添加了 -Dfile.encoding=UTF-8 并且普通文件可以正常工作。然而,属性显示出一些奇怪的行为。

如果我从 Notepad++ 复制 utf8 编码属性并将它们粘贴到 Eclipse 中,它们会显示并正常工作。当我重新打开属性文件时,我看到一些 Unicode 字符而不是正确的字符,例如:

Zur\u00EF\u00BF\u00BDck instead of Zurück

但应用程序仍然可以正常工作。如果我开始编辑属性,添加一些特殊字符并保存,它们会正确显示,但是它们不起作用,并且所有以前工作的特殊字符都不再起作用。

当我将本地版本与 CVS 进行比较时,我可以在远程文件上正确地看到特殊字符,并且在更新后我又开始了:应用程序正常,但 Eclipse 显示 Unicode 字符。

我尝试通过右键单击它并选择“其他:UTF8”来更改文件编码,但它没有帮助。它还说:“由内容决定:ISO-8859-1”

我正在使用基于 Eclipse 3.3 的 Java 6 和 Jboss Developer

我可以通过在 Notepad++ 中编辑属性并将它们粘贴到 Eclipse 中来忍受它,但如果有人可以帮助我在 Eclipse 中修复此问题,我将不胜感激。

最佳答案

“pre-Java-9”的答案如下。从 Java 9 开始,属性文件默认以 UTF-8 保存和加载,但如果检测到无效的 UTF-8 字节序列,则会回退到 ISO-8859-1。见 Java 9 release notes了解详情。


根据定义,属性文件是 ISO-8859-1 - 请参阅 Properties 的文档类。

Spring 有一个替换,它可以使用指定的编码加载,使用 PropertiesFactoryBean .

编辑:正如 Laurence 在评论中指出的那样,Java 1.6 引入了 loadstore 的重载,它们采用 Reader/Writer 。这意味着您可以使用您想要的任何编码为文件创建一个阅读器,并将其传递给 load。不幸的是 FileReader still 不允许你在构造函数(aargh)中指定编码,所以你会被链接 FileInputStreamInputStreamReader 一起。但是,它会起作用。

例如,使用 UTF-8 读取文件:

Properties properties = new Properties();
InputStream inputStream = new FileInputStream("path/to/file");
try {
Reader reader = new InputStreamReader(inputStream, "UTF-8");
try {
properties.load(reader);
} finally {
reader.close();
}
} finally {
inputStream.close();
}

关于Eclipse 中的 Java 属性 UTF-8 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/863838/

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