【发布时间】:2009-08-13 04:47:09
【问题描述】:
我正在编写一个使用 JSP 和 Java 的程序。如何使用属性文件来支持多种语言?
顺便说一句,总有一些东西,比如\u4345。
这是什么?他们是怎么来的?
【问题讨论】:
-
你使用什么样的框架?大多数框架,如 struts、tapestry 等都支持 i18n,所以你只需要检查它们。
我正在编写一个使用 JSP 和 Java 的程序。如何使用属性文件来支持多种语言?
顺便说一句,总有一些东西,比如\u4345。
这是什么?他们是怎么来的?
【问题讨论】:
对于多种语言,请查看ResourceBundle 类。
关于\u4345,这是Java 的黑暗和非常烦人的遗留角落之一。属性文件需要是 ASCII 格式,因此所有非 ASCII 字符都需要编码为 \uxxxx(它们的 Unicode 值)。您可以通过native2ascii command line tool 转换文件以使用此编码。
如果您使用的是 IDE 或构建工具,则应该有一个自动调用它的选项。
如果属性文件是你自己完全控制的东西,你可以从 Java6 开始,也可以直接在属性文件中使用 UTF-8(或任何其他字符集),并在加载时使用specify that encoding:
// new in Java6
props.load(new InputStreamReader(new FileInputStream(file), 'UTF-8'));
同样,这仅在您自己加载属性时才有效,如果其他人这样做则无效,例如 ResourceBundle(用于国际化)。
【讨论】:
http://java.sun.com/docs/books/tutorial/i18n/index.html 上有完整的教程
这指定并解释了您需要了解的任何内容。
【讨论】:
Peter 已经提到了 i18n 上的 Java tutorial。如果您正在构建 JSP,您可能希望查看 JSTL,它基本上允许您通过 JSP 标签使用 ResourceBundle 的功能。
【讨论】: