我们正在使用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

有帮助吗?

解决方案

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

不要忘记即使使用ISO-8859-1文件,也不必使用该格式来编辑文件。您可以使用 native2ascii 进行转换来自不同编码的文件。保留<!> quot; source <!>;属性文件为UTF-8,然后作为构建的一部分运行<=>。例如:

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

其他提示

以您喜欢的任何编码编写文件,并通过 native2ascii 工具(正是出于此目的而与JDK一起提供)作为构建或部署过程的一部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top