3

我可以使用与默认编码不同的 java.util.Properties 吗?

4

3 回答 3

5

是的,但是您必须小心使用带有/的load()andstore()方法,并通过使用具有正确编码的 a 来显式构造它们。ReaderWriterInputStreamReader/OutputStreamWriter

对于隐式使用属性文件的库,这可能是不可能的。

编辑:上述方法仅在 Java 1.6 中引入 - 对于旧版本,您不走运,正如 dsadinoff 所写。

于 2009-09-01T10:39:22.467 回答
3

除非你

  1. 正在运行 java 6 或更高版本
  2. 控制加载属性文件的代码,并且可以使用Reader。请参阅javadoc

这是规范中一个非常烦人的缺陷。有几种解决方法,可能最简单的方法是从适合编码的(cp1250、utf-8 等)源自动生成符合 unicode 转义的 .properties 文件。

Java 附带了一个名为native2ascii的转码器来为您执行此操作:

关于这个主题有一些陈旧的 RFE:

于 2009-09-01T10:46:35.603 回答
1

如果您的属性文件在构建时可用,您还可以使用 native2ascii 任务在您的 ant 脚本中转换它:

<property name="javac.source.encoding" value="Cp1250"/>

<native2ascii src="${src.dir}" dest="${classes.dir}"
   encoding="${javac.source.encoding}"
   includes="**/*.properties"/>
于 2009-09-01T11:35:28.063 回答