未编码的&符号和大写

时间:2013-03-05 16:07:39

标签: html css urlencode ampersand capitalize

Gretings all,

我想知道是否有人注意到这种不一致,并且知道如何修复它。

示例:http://jsfiddle.net/p5G2N/

前提:

一些未加编码的&符号加入了几个词;没有空格。

<p>Goodevening&goodnight</p>

结果:

Chrome / IE:无法将该字符解释为符号,打破了预期的大写样式。显示为: Goodevening&amp; Goodnight [INCORRECT - 注意晚安的大写字母G,不应该大写,因为它只是一个单词]

Firefox:管理正确解释未编码的&符号,并将该字符串视为单个单词。显示为: Goodevening&amp; goodnight [CORRECT]

问题:

如何让Chrome / IE尊重样式(大写)?

3 个答案:

答案 0 :(得分:3)

&amp &上使用。来自W3 specification

  

作者应使用"&amp;"(ASCII十进制38)而不是"&",以避免与字符引用(实体引用开放分隔符)的开头混淆。作者还应在属性值中使用"&amp;",因为在CDATA属性值中允许使用字符引用。

答案 1 :(得分:2)

TL; DR:您的期望不正确。 goodbye&goodnight有两个单词分离点,在&符号的两侧各有一个。是否编码符号是无关紧要的。


据我所知,CSS并未完全指定“单词”是什么,但建议使用Unicode标准单词分离算法,您可以找到here (UAX29)

非正式摘要是单词是一系列字母,数字或“Connector_Punctuation”符号(tie),可能包含“MidLetter”,“MidNum”或“MidNumLet”符号(引用文档中有一个列表) ,取决于符号的直接​​上下文。 &不属于任何类别,因此符合UAX29的单词分离算法应在&之前和之后拆分单词。

单词分离算法可以考虑语言。事实上,它可以做任何事情,但对于该语言的母语人士来说,这应该不足为奇。如果将word&word视为一个词,非程序员可能会感到惊讶。

答案 2 :(得分:0)

如果您想在HTML中使用& - 符号,请改用&amp;