是否可以强制JSF以unicode-way ä
而不是命名实体方式ä
转义特殊字符?
背景:一些旧的移动设备(例如,带有Android 2.3.4的HTC-Desire)拒绝显示包含命名实体的页面:
此页面包含以下错误...实体'auml'未定义。
该网页包含HTML5-Doctype,according to the specification auml
为valid predefined character-reference。
所以我认为这是一个浏览器错误,但这对我没有帮助。
我尝试用他们的unicode表示替换特殊字符。但是,如果我在视图中放置ä
甚至ä
,JSF会向我显示ä
。
如果我将实体映射放在doctype中(我知道这不应该在HTML5-doctype中完成),行为会变得非常奇怪:
<!DOCTYPE html [
<!ENTITY auml "ä">
<!ENTITY mdash "—">
...
]>
这将导致没有映射的正确HTML5文档类型。但—
将替换为—
而ä
将不会被替换。
是否有人对此进行了解释,或者是否有可能将JSF配置为始终呈现unicode-escaped权限?
答案 0 :(得分:1)
如果您将<f:view encoding>
设置为非Unicode兼容编码,则会发生这种情况。
相应修复:
<f:view encoding="UTF-8">
从Facelets上的JSF2开始,顺便说一下,这是默认值,所以如果你确实在Facelets上使用JSF2,你可以安全地省略它。