我可以在html中使用未编码的符号(&;)吗?
我正在建立一个网站,在那里我必须使用不太完美的主数据(我想我不是唯一一个:-) 在我的例子中,我必须将xml过滤器呈现为html(使用xsl)。有时主数据使用html enities allready(例如法语中的我可以在html中使用未编码的符号(&;)吗?,html,html-entities,ampersand,Html,Html Entities,Ampersand,我正在建立一个网站,在那里我必须使用不太完美的主数据(我想我不是唯一一个:-) 在我的例子中,我必须将xml过滤器呈现为html(使用xsl)。有时主数据使用html enities allready(例如法语中的é;),因此我必须在那里使用“disable output escaping='yes')以避免双重编码 最简单的解决方案是同时禁用输出转义,所以我从不冒双重编码的风险 此主数据唯一未编码的字符是与符号。但是当我将它们解析为“原始”(因此,而不是&;时,所有浏览器似乎
é;
),因此我必须在那里使用“disable output escaping='yes')以避免双重编码
最简单的解决方案是同时禁用输出转义,所以我从不冒双重编码的风险
此主数据唯一未编码的字符是与符号。但是当我将它们解析为“原始”(因此,而不是&;
时,所有浏览器似乎都能接受它
所以问题是:在html中使用未编码的符号和有什么后果?这取决于 我在这个主题上看到的最好的研究可以找到 在HTML5中,您应该避开所有不属于以下类别的符号: 不明确的“与”是U+0026“与”字符(&),即 后跟U+0030位零(0)范围内的一个或多个字符 至U+0039第九(9)位,U+0061拉丁文小写字母A至U+007A拉丁文 小写字母Z和U+0041拉丁文大写字母A至U+005A拉丁文 大写字母Z,后跟U+003B分号字符(;),其中 这些字符与命名列表中给定的任何名称都不匹配 字符引用部分
AFAIK裸符号在HTML中是非法的。因此,让我们看看后果:
- 您现在依赖浏览器的功能来检测问题并从中正常恢复。请注意,要做到这一点,浏览器必须猜测:
是“清晰的”一个符号,后面跟一个空格,&
显然是版权的象征。但是文本片段©;
呢?我现在使用的浏览器把它弄坏了edit©
- 如果您使用的是XHTML,或者内容将被插入到XML文档中,那么结果将是一个硬解析器错误
总而言之:是的,你可以,但严格来说它是不合法的(HTML5除外,在HTML5中,只要它不“看起来”像一个角色实体,它就是合法的).你有一个非常尴尬的情况要处理-我的同感。你能在XSL转换之前预处理主数据吗?你可以使用一个简单的regexp,用
&;
替换任何空的符号,这样在输入到XSL之前就可以对输入进行规范化。@Peter现在,询问者可以单方面地自行关闭问题是重复的。我建议这样做。@Mark我收到了你的评论通知,我认为现在状态还可以了?@Peter yep,看起来不错。浏览器不必猜测,因为这有一个规范,至少在HTML5中是这样的,感谢你指出链接帖子的作者urlMatthias Bynens是一个强大且高度活跃的开发人员。任何关于HTML、ECMAScript和CSS规范的边缘案例,Matthias很有可能以迂腐的细节来描述它,就像他在这里所做的那样。