2009-08-13 52 views
5

我写一个程序使用JSP和Java, 我怎样才能使用属性文件,支持多国语言? 顺便说一下,总是有一些像\ u4345, 这是什么?他们如何来?如何在java中处理多种语言?

+0

你使用什么样的框架?像struts,tapestry等大多数框架都支持i18n,所以你只需要检查它们。 – nightingale2k1 2009-08-13 06:25:32

回答

14

对于多种语言,请查看ResourceBundle类。

关于\u4345,这是Java的黑暗和非常恼人的遗留角落之一。属性文件需要使用ASCII码,以便所有非ASCII字符需要编码为\uxxxx(它们的Unicode值)。您可以将文件转换为与native2ascii command line tool一起使用此编码。 如果您使用的是IDE或构建工具,应该有一个选项可以自动调用它。

如果属性文件是你必须在自己完全控制的东西,你可以从的Java6 specify that encoding开始也使用UTF-8(或其他任何字符集)直接在财产文件,当你加载:

// new in Java6 
props.load(new InputStreamReader(new FileInputStream(file), 'UTF-8')); 

同样,这只适用于您自己加载属性的情况,而不是其他人的情况,例如ResourceBundle(用于国际化)。

+0

描述如何使用ResourceBundles的个人博客文章:http://tshikatshikaaa.blogspot.nl/2012/11/introduction-to-java-internationalization.html – JVerstry 2012-11-17 18:41:01

1

关于i18n的Java tutorial已经被Peter提到过。如果您正在构建JSP,您可能需要查看JSTL,它基本上允许您通过JSP标记使用ResourceBundle的功能。