我正在建立一个网站,我必须使用不那么完美的masterdata(我想我不是唯一的一个: - ))
在我的情况下,我必须将xml过滤器呈现为html(使用xsl)。有时masterdata使用html-enitites allready(例如; é
用法语单词)所以我必须在那里使用'disable-output-escaping ='yes')以避免双重编码。
最简单的解决方案是禁用输出一起转义,所以我从不冒双重编码的风险。
错过此masterdata编码的唯一字符是&符号。但是,当我将它们解析为“原始”时(因此而不是&
所有浏览器似乎都可以使用它。
所以问题是:在html中使用未编码的&符号有什么后果?
答案 0 :(得分:8)
取决于
我可以在here
找到关于此主题的最佳研究在HTML5中,您应该转义所有不属于以下类别的&符号:
模糊的&符号是U + 0026 AMPERSAND字符(&) 后跟U + 0030 DIGIT ZERO(0)范围内的一个或多个字符 至U + 0039 DIGIT九(9),U + 0061拉丁文小写字母A至U + 007A拉丁语 小写字母Z和U + 0041拉丁文大写字母A到U + 005A拉丁文 CAPITAL LETTER Z,后跟U + 003B SEMICOLON字符(;),其中 这些字符与命名中给出的任何名称都不匹配 字符引用部分。
答案 1 :(得分:8)
AFAIK裸露的&符号在HTML中是非法的。有了这个,让我们来看看后果:
&
“明显”是一个&符号后跟一个空格,©
显然是版权符号。但是文本片段edit©
怎么样?我正在使用的浏览器现在破坏了它。由于手动检测和解释这些案例比更换所有不属于实体(例如正则表达式)的&符号更难以实现后者。
答案 2 :(得分:4)
请参阅Do I really need to encode '&' as '&'?
总结:是的,你可以,但严格来说,这是不合法的(除非在HTML5中它是合法的,只要它不“看起来像”一个字符实体)。