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

4ju*_*man 1 jsf localization character-encoding liferay

我使用的是Primefaces 3.5 + Lifaray 6.2.我需要在我的应用程序中进行内部化.我使用Language_en_US.properties文件和其他人的字符串资源.在backbean我使用ResourceBundle.getBundle它并且它的工作属性.

但鉴于我使用

<p:outputLabel value="#{i18n['server-address']}"/>
Run Code Online (Sandbox Code Playgroud)

在西里尔语中,我总是在页面上出现问号

?????? ??????

页面代码已经作为问号,因此它不是浏览器问题.

如果我直接使用ResourceBundle.getBundle

<p:outputLabel value="#{adminBean.getString('main')}"/>
Run Code Online (Sandbox Code Playgroud)

然后我得到了西里尔文.

有没有办法使用没有bean的i18n?

Tom*_*nos 6

Liferay期望资源包以UTF-8编码(与PropertyResourceBundle使用ISO-8859-1的普通Java 不同).

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

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

请参阅Liferay文档中的本地化JSF Portlet.