是否有可能强制JSF以Unicode方式转义特殊字符,而不是以命名实体方式转义,例如ä
而不是ä
?
背景:一些旧的移动设备(例如搭载Android 2.3.4的HTC Desire)拒绝显示包含命名实体的页面:
此页面包含以下错误...实体“auml”未定义。
该页面具有HTML5 Doctype,并且根据规范,auml
是一个有效的预定义字符引用。因此,我认为这是浏览器的错误,但这对我没有帮助。
ä
甚至一个ä
,JSF将呈现给我一个ä
。
如果我将实体映射放在文档类型中(我知道这不应该在HTML5文档类型中完成),行为会变得非常奇怪:<!DOCTYPE html [
<!ENTITY auml "ä">
<!ENTITY mdash "—">
...
]>
这将产生一个正确的HTML5文档类型,而不需要映射。但是
—
将被替换为—
,而ä
则不会被替换。有人能解释一下这个问题吗?或者是否有可能配置JSF始终呈现unicode转义实体?
<f:view encoding>
为非Unicode兼容编码,则也可能会发生这种情况,但那将是一个太明显的原因。 - BalusCä
的渲染对我来说很好...你没有将它作为 XML MIME 类型提供吧?尽管 HTML5 试图模糊这个问题,但是auml
和其他 HTML 实体在 XML 中不是预定义的,应该被 XML 解析器拒绝。 - bobince<f:view encoding="ISO-8859-15">
似乎是一个太明显的原因了。但对我来说显然不是。感谢你的提示,我感到惭愧。所以问题已经得到解答,尽管我的问题还没有解决。 - leflohtext/html
页面上使用ä
时就能够重现吗?我不敢相信他们会在一个点发布版中破坏如此基本的行为... - bobincecontentType
不一定默认为text/html
,所以你应该手动设置它。参见这个问题。如果你问我,这是 JSF 中一个糟糕的设计,转到 XML 模式会很容易打破你的 JavaScript 一半,除了实体问题。 - bobince