Primefaces Ajax更新上的欧元符号

时间:2013-07-22 07:02:22

标签: ajax jsf primefaces

我正在尝试在我的页面上写下欧元货币符号。它在我加载页面时工作得很好,但是当我通过AJAX进行部分更新时,没有正确加载欧元符号。我尝试了3种不同的方法:

<h:outputText value="&euro;" />
<h:outputText value="&#x26;euro;" />
<h:outputText value="€" />

加载页面时,它适用于第一种方法。结果如下:

€
euro;
€

使用AJAX进行部分更新时,它们都无法正常工作:

?
&euro;
€

在实施Unicode input retrieved via PrimeFaces input components become corrupted

中描述的过滤器时,与上述结果相同

我花了一整天时间试图解决这个问题。我感谢任何帮助。

谢谢, 道格拉斯。

1 个答案:

答案 0 :(得分:3)

您找到的answer仅适用于解码HTTP请求参数(提交的表单值)。但是,这不适用于您的情况。您显然遇到了HTTP响应编码问题(HTML / XML输出生成)。

可以通过至少两种方式控制HTTP响应的编码:

  • <f:view encoding>中声明的编码,默认为UTF-8。这也可以通过ExternalContext#setResponseCharacterEncoding()以编程方式设置,但这通常不是由JSF开发人员完成的。
  • 用于保存物理模板文件的编码。这实际上不会影响在生成HTML / XML输出期间使用的编码,但它确实会影响字符的处理方式。如果使用与<f:view encoding>不同的编码保存模板文件,例如ISO-8859-1,则字符可能最终为Mojibake

在您的特定情况下,如果您没有修改<f:view encoding>(否则您可能更有可能在您的问题中明确提到它),那么最可能的原因是您的模板文件是使用编码错误。这又是在编辑器本身中配置的。如果它是例如Eclipse,那么你需要通过 Window&gt;设置它。偏好&gt;一般&gt;工作区&gt;文本文件编码

enter image description here

另见: