我正在尝试在我的页面上写下欧元货币符号。它在我加载页面时工作得很好,但是当我通过AJAX进行部分更新时,没有正确加载欧元符号。我尝试了3种不同的方法:
<h:outputText value="€" />
<h:outputText value="&euro;" />
<h:outputText value="€" />
加载页面时,它适用于第一种方法。结果如下:
€
euro;
€
使用AJAX进行部分更新时,它们都无法正常工作:
?
€
€
在实施Unicode input retrieved via PrimeFaces input components become corrupted
中描述的过滤器时,与上述结果相同我花了一整天时间试图解决这个问题。我感谢任何帮助。
谢谢, 道格拉斯。
答案 0 :(得分:3)
您找到的answer仅适用于解码HTTP请求参数(提交的表单值)。但是,这不适用于您的情况。您显然遇到了HTTP响应编码问题(HTML / XML输出生成)。
可以通过至少两种方式控制HTTP响应的编码:
<f:view encoding>
中声明的编码,默认为UTF-8。这也可以通过ExternalContext#setResponseCharacterEncoding()
以编程方式设置,但这通常不是由JSF开发人员完成的。<f:view encoding>
不同的编码保存模板文件,例如ISO-8859-1,则字符可能最终为Mojibake。在您的特定情况下,如果您没有修改<f:view encoding>
(否则您可能更有可能在您的问题中明确提到它),那么最可能的原因是您的模板文件是使用编码错误。这又是在编辑器本身中配置的。如果它是例如Eclipse,那么你需要通过 Window&gt;设置它。偏好&gt;一般&gt;工作区&gt;文本文件编码。