问号而不是资源包中的 Unicode 字符
Question marks instead of Unicode characters with resource bundle in view
我使用 Primefaces 3.5 + Lifaray 6.2。
我的应用程序需要一些内部化。
我使用 Language_en_US.properties
文件和其他字符串资源。
在 backbean 中,我使用 ResourceBundle.getBundle
并且它工作正常。
但鉴于我使用
<p:outputLabel value="#{i18n['server-address']}"/>
对于西里尔文,我总是在页面上看到问号
?????? ??????
在页面代码中已经是问号了,所以不是浏览器的问题。
如果我直接用ResourceBundle.getBundle
<p:outputLabel value="#{adminBean.getString('main')}"/>
然后我得到了西里尔字母。
有没有办法不用bean也能使用i18n?
Liferay 期望资源包以 UTF-8 编码(不同于 PropertyResourceBundle
中使用 ISO-8859-1 的普通 Java)。
检查您 Language_ru_RU.properties
文件的编码 - 很可能不是 UTF-8。这可以解释 ResourceBundle.getBundle 可以正常工作,而 #{i18n['server-address']}
不能。
虽然与标准有偏差,但 UTF-8 编码非常舒适,因为不需要字符转义。
请参阅 Liferay 文档中的 Localizing JSF Portlets。
我使用 Primefaces 3.5 + Lifaray 6.2。
我的应用程序需要一些内部化。
我使用 Language_en_US.properties
文件和其他字符串资源。
在 backbean 中,我使用 ResourceBundle.getBundle
并且它工作正常。
但鉴于我使用
<p:outputLabel value="#{i18n['server-address']}"/>
对于西里尔文,我总是在页面上看到问号
?????? ??????
在页面代码中已经是问号了,所以不是浏览器的问题。
如果我直接用ResourceBundle.getBundle
<p:outputLabel value="#{adminBean.getString('main')}"/>
然后我得到了西里尔字母。
有没有办法不用bean也能使用i18n?
Liferay 期望资源包以 UTF-8 编码(不同于 PropertyResourceBundle
中使用 ISO-8859-1 的普通 Java)。
检查您 Language_ru_RU.properties
文件的编码 - 很可能不是 UTF-8。这可以解释 ResourceBundle.getBundle 可以正常工作,而 #{i18n['server-address']}
不能。
虽然与标准有偏差,但 UTF-8 编码非常舒适,因为不需要字符转义。
请参阅 Liferay 文档中的 Localizing JSF Portlets。