具有ISO 8859以外字符的语言的资源文件

时间:2009-06-24 05:50:15

标签: localization internationalization weblogic jstl jdk1.5

我们正在使用JSTL实现i18n,并遇到一个问题,即.properties文件中定义的资源文本和非ISO 8859字符(例如inidic语言)无法通过标记呈现。

在浏览了tag和BundleHelper类的代码之后,我们最终发现它在内部使用了ResourceBundle.getBundle方法,而该方法又使用PropertyResourceBundle将.properties文件作为资源包加载。

它内部依赖于java.util.Properties #load(InputStream)方法,该方法不支持读取非ISO 8859字符,唯一的解决方法是用/ u hex hex hex hex格式表示这些字符,这是相当的如果整个.properties文件是印地语语言,则不切实际!

是否有任何解决方法。我尝试在.properties文件中使用XML格式,但PropertyResourceBundle无法识别它!

环境细节是:Jdk 1.5,Weblogic 9.2

2 个答案:

答案 0 :(得分:1)

你绝对 使用JDK 1.5吗?如果你可以移动到1.6,你可以使用load(Reader)重载,这可以让你将文件存储在其他编码中(例如UTF-8)。不可否认,我不确定这与PropertyResourceBundle有什么关系。

不要忘记即使使用ISO-8859-1文件,也不必使用该格式来编辑文件。您可以使用native2ascii转换来自不同编码的文件。将“源”属性文件保存为UTF-8,然后在构建过程中运行native2ascii。例如:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties

答案 1 :(得分:0)

以您喜欢的任何编码编写文件,并在构建或部署过程中通过native2ascii工具(JDK为实现此目的而附带)运行它们。