4

是否可以强制 JSF 以 unicode-wayä而不是 named-entity-way转义特殊字符ä

背景:一些旧的移动设备(例如带有 Android 2.3.4 的 HTC-Desire)拒绝显示包含命名实体的页面:

此页面包含以下错误... 实体 'auml' 未定义。

该页面具有 HTML5-Doctype 并且根据规范 auml有效的预定义字符引用。所以我认为这是一个浏览器错误,但这对我没有帮助。

我尝试的是用它们的 unicode 表示替换特殊字符。但是,如果我在视图中放置一个ä甚至一个ä,JSF 会为我呈现一个ä. 如果我将实体映射放在 doctype 中(我知道这不应该在 HTML5-doctype 中完成),那么行为会变得非常奇怪:

<!DOCTYPE html [
    <!ENTITY auml "&#228;">
    <!ENTITY mdash "&#8212;">
    ...
]>

这将导致没有映射的正确 HTML5 文档类型。但是 a&mdash;将被替换为&#8212;while an&auml;不会被替换。

有没有人对此进行解释,或者是否有可能将 JSF 配置为始终呈现 unicode 转义的实体?

4

1 回答 1

1

如果您设置<f:view encoding>为非 Unicode 兼容编码,就会发生这种情况。

相应地修复它:

<f:view encoding="UTF-8">

顺便说一下,由于 Facelets 上的 JSF2,这已经是默认值,因此如果您确实在 Facelets 上使用 JSF2,您可以放心地忽略它。

于 2013-09-03T20:55:37.817 回答