不允许十进制数字字符引用:禁止或文本?

时间:2014-04-04 08:46:49

标签: html html5 character-reference

根据HTML 5.1 spec ::十进制数字字符引用:

  

&符号必须跟随"#" (U + 0023)字符,紧随其后   通过一个或多个ASCII数字,表示基数为十的整数   对应于根据的Unicode代码点   下面的定义。然后必须跟着数字&#34 ;;" (U + 003B)   字符。

及以下:

  

允许使用上述数字字符引用表单   引用U + 0000,U + 000D以外的任何Unicode代码点,   永久未定义的Unicode字符(非字符),代理   (U + D800-U + DFFF),控制空格字符以外的字符。

我很困惑。这是否意味着(粗体文字)无法引用的字符(如U + 000或U + 00D)被禁止或仅被视为文字,而不是作为参考?< / p>

TL; DR 我应该对无法引用的实体(例如&#XD;)抛出验证错误,还是将它们视为文本?

2 个答案:

答案 0 :(得分:3)

8.2.4.69 Tokenizing character references说:

  

否则,如果数字在0xD800到0xDFFF范围内或大于0x10FFFF,那么这是parse error。返回U + FFFD REPLACEMENT CHARACTER字符标记。

     

否则,返回代码点为该数字的Unicode字符的字符标记。另外,如果数字在0x0001到0x0008,0x000D到0x001F,0x007F到0x009F,0xFDD0到0xFDEF,或者是0x000B,0xFFFE,0xFFFF,0x1FFFE,0x1FFFF,0x2FFFE,0x2FFFF,0x3FFFE,0x3FFFF,0x4FFFE,0x4FFFF之一,0x5FFFE,0x5FFFF,0x6FFFE,0x6FFFF,0x7FFFE,0x7FFFF,0x8FFFE,0x8FFFF,0x9FFFE,0x9FFFF,0xAFFFE,0xAFFFF,0xBFFFE,0xBFFFF,0xCFFFE,0xCFFFF,0xDFFFE,0xDFFFF,0xEFFFE,0xEFFFF,0xFFFFE,0xFFFFF,0x10FFFE或0x10FFFF,那么这是一个parse error

答案 1 :(得分:1)

虽然我没有在规范中指定,但大多数(如果不是全部?)现代浏览器仍将它们视为字符,但如果它们不属于已知规模,而是打印未知符号标记:

Sample

然而,从可靠(规范)来源得出的答案会更好,因为我相信这个问题可以广泛应用。

另见this answer to a related question