根据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 我应该对无法引用的实体(例如
)抛出验证错误,还是将它们视为文本?
答案 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)
虽然我没有在规范中指定,但大多数(如果不是全部?)现代浏览器仍将它们视为字符,但如果它们不属于已知规模,而是打印未知符号标记:
然而,从可靠(规范)来源得出的答案会更好,因为我相信这个问题可以广泛应用。