具有ISO 8859以外字符的语言的资源文件
-
10-07-2019 - |
题
我们正在使用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一起提供)作为构建或部署过程的一部分。