0

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

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

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

€
euro;
€

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

?
&euro;
€

实现与通过 PrimeFaces 检索的 Unicode 输入中描述的过滤器相同的结果输入组件损坏

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

谢谢,道格拉斯。

4

1 回答 1

3

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

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

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

在您的特定情况下,如果您没有修改<f:view encoding>(否则您更有可能在问题中明确提到它),那么最可能的原因是您的模板文件使用错误的编码保存。反过来,这将在编辑器本身中进行配置。如果是例如 Eclipse,那么您需要通过Window > Preferences > General > Workspace > Text File Encoding进行设置。

在此处输入图像描述

也可以看看:

于 2013-07-22T12:49:37.023 回答