java - 如何在属性文件中正确存储和检索国际化字符串?

标签 java encoding properties internationalization

我正在通过制作一个使用属性文件 + ResourceBundle 获取不同字符串的 Hello World 程序来试验国际化。

具体来说,我有一个存储“hello.world=Hello World!”的文件“messages_en_US.properties”,当然可以正常工作。

然后我有一个文件“messages_ja_JP.properties”,我用它尝试了各种各样的事情,但是当打印到控制台或在 Swing 中时,它总是显示为某种类型的乱码字符串。问题显然出在将内容读入 Java 字符串时,因为直接输入源代码的日文 Java 字符串可以正常打印。

我尝试过的事情:

  • UTF-8 编码的 .properties 文件,其值采用日语字符串原样。我读到的东西表明 Java 期望属性文件采用系统的 native 编码......?无论哪种方式都行不通。
  • 默认编码 (ISO-8859-1) 的文件和存储为由 Java 附带的 native2ascii 程序创建的转义 Unicode 的值。尝试使用各种日语编码的源文件...SHIFT-JIS、EUC-JP、ISO-2022-JP。

编辑:

我实际上是在输入此内容时想出来的,但我想我还是会发布它并回答它以防它对任何人有帮助。

最佳答案

我意识到 native2ascii 假设(惊讶)它每次都是从我的操作系统的默认编码转换而来,因此没有生成正确的转义 Unicode 字符串。

使用“-encoding encoding_name”选项运行 native2ascii,其中 encoding_name 是源文件编码的名称(在本例中为 SHIFT-JIS)产生了正确的结果,并且一切正常。

Ant 也有一个 native2ascii 任务,它在一组输入文件上运行 native2ascii 并将输出文件发送到任何你想要的地方,所以我能够在 Eclipse 中添加一个构建器来执行此操作,这样我的源文件夹就会在它们的原始文件夹中包含字符串易于编辑和构建的编码会自动将转换后的同名文件放入输出文件夹。

关于java - 如何在属性文件中正确存储和检索国际化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194430/

相关文章:

Java:Eclipse 崩溃(Linux)

c# - 在 Unity 中重命名序列化自动属性

iphone - NSData 到 NSString 的转换问题!

opencv - 如何让 FFMPEG 从 OpenCV 获取帧并将它们流式传输到 HTTP 服务器

class - Visual Basic 6 公共(public)变量到属性

MySQL 中的 Java 属性文件

java - 如何使用paintComponent以不同的方法进行不同的绘图?

java - StringSubstitutor 支持大小写转换

java - 如何使用java流根据键将map的值分组到列表中?

java - HTTp/tomcat base64 编码