在视图中使用资源包的问号而不是Unicode字符

时间:2015-10-08 08:08:35

标签: jsf character-encoding localization liferay

我使用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?

1 个答案:

答案 0 :(得分:6)

Liferay希望资源包以UTF-8编码(与普通Java中的PropertyResourceBundle不同,后者使用ISO-8859-1)。

检查您Language_ru_RU.properties文件的编码 - 很可能不是UTF-8。这可以解释ResourceBundle.getBundle是否正常工作,而#{i18n['server-address']}则不然。

虽然它偏离标准,但UTF-8编码非常舒适,因为不需要进行字符转义。

请参阅Liferay文档中的Localizing JSF Portlets