java.util.Properties 和 Cp1250

发布于 2024-08-03 17:43:11 字数 44 浏览 4 评论 0原文

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

Can I use java.util.Properties with encoding different then default?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

西瓜 2024-08-10 17:43:11

是的,但是你必须小心使用 load()store() 采用 Reader 的方法/Writer,并使用具有正确编码的 InputStreamReader/OutputStreamWriter 显式构造它们。

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

编辑:上面描述的方法仅在 Java 1.6 中引入 - 对于旧版本,你运气不好,正如 dsadinoff 所写的。

Yes, but then you have to be careful to use the load() and store() methods that take a Reader/Writer, and explicitly construct those by using an InputStreamReader/OutputStreamWriter with the correct encoding.

This may not be possible with libraries that use properties files implicitly.

Edit: The methods described above have only been introduced in Java 1.6 - for older versions, you're out of luck, as dsadinoff wrote.

花开浅夏 2024-08-10 17:43:11

除非你

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

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

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

有一些关于此主题的旧 RFE:

Not unless you

  1. are running java 6 or later
  2. control the code loading the properties file, and can use a Reader. See the javadoc.

This is a pretty annoying flaw in the spec. There are several workarounds, probably the simplest being to auto-generate a unicode-escaped compliant .properties file from an encoding-appropriate (cp1250, utf-8, whatever) source.

Java ships with a transcoder called native2ascii to do this for you:

There are some aged RFEs on this subject:

静若繁花 2024-08-10 17:43:11

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

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

<native2ascii src="${src.dir}" dest="${classes.dir}"
   encoding="${javac.source.encoding}"
   includes="**/*.properties"/>

If your properties file is available at build time, you can also convert it in your ant script using the native2ascii task:

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

<native2ascii src="${src.dir}" dest="${classes.dir}"
   encoding="${javac.source.encoding}"
   includes="**/*.properties"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文