4

我想知道,为什么 JSF 属性文件在 Eclipse 中不接受非 ASCII 字符?

我有一些名为“messages.properties”的属性文件,我必须为非 ASCII 字符编写 unicode 转义字符,例如:

title=\u01af\u0020\u0a3f0
header=\u0ff0\u0020\u0ab1

这意味着客户无法使用常规文本编辑器编辑这些属性文件。

有什么解决办法吗?

4

3 回答 3

3

java.util.Properties.load(InputStream)这源于使用 ISO-8859-1的事实。

load(InputStream) / store(OutputStream, String) 方法与 load(Reader)/store(Writer, String) 对的工作方式相同,除了输入/输出流以 ISO 8859-1 字符编码进行编码。不能用这种编码直接表示的字符可以使用 Unicode 转义来编写;转义序列中只允许使用单个 'u' 字符。native2ascii 工具可用于将属性文件与其他字符编码进行转换。

多年来一直是个问题。我已经通过实现进行编码转换的自定义标签来解决这个问题,但这通常是一种痛苦。

Java 6 引入了Properties.load(Writer)UTF-8 可以很好地工作,但它似乎还没有被广泛采用。

我建议使用AnyEdit 工具在 unicode 表示法之间进行转换。

至于最终用户——如果他们要编辑属性文件(这听起来很奇怪),那么你可以让他们写下他们喜欢的任何字符,然后使用 native2acii(或它的包装器)转换文件

于 2010-04-08T18:16:41.280 回答
1

自 Eclipse 4.2(Juno,2012)以来,这不再是必需的。当您使用内置的属性文件编辑器时,Eclipse 会透明地处理这个问题。它将呈现并接受 UTF-8 格式的值,但它会在后台默默地转换为\uXXXX格式。应该注意的是,这与 Git 插件(例如在合并期间删除的旧行)结合使用时会产生一些奇怪的副作用,如果您在拉/推之前关闭所有属性文件,效果最好。

如果您还没有使用 Eclipse 4.x,请考虑使用JDK 安装目录文件夹中的native2ascii工具/bin将 UTF-8 属性文件转换为 ASCII 属性文件,如class的javadoc 中java.util.Properties所述。

您可以保留“原始”属性文件(例如给它们一个.utf8扩展名)并使用批处理/shell文件来转换它们,如下所示:

cd c:\path\to\properties\files
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_cs.properties.utf8 text_cs.properties
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_ja.properties.utf8 text_ja.properties
c:\path\to\jdk\bin\native2ascii.exe -encoding UTF-8 text_zh.properties.utf8 text_zh.properties
# 你可以在这里添加更多的属性文件。

这样,您只需编辑.utf8文件并运行一次批处理/shell 脚本即可将本机字符转换为\uXXXX. 另请参阅此博客条目

也可以看看:

于 2010-04-08T21:26:37.003 回答
-2

只需将 .properties 文件保存为 UTF-8 格式就可以了。

于 2015-07-20T07:19:27.580 回答