1

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

在深入研究了标记和 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

4

2 回答 2

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
于 2009-06-24T06:03:22.907 回答
0

作为构建或部署过程的一部分,以您喜欢的任何编码编写您的文件并通过native2ascii工具(JDK 随附用于此目的)运行它们。

于 2009-06-24T06:04:15.947 回答