为什么html5规范中禁止使用以下字符?

时间:2015-04-09 10:31:13

标签: html5 unicode specifications

根据以下html5 spec(在表格之后),禁止使用以下字符:

 Otherwise, return a character token for the Unicode character whose code point is that number.   
 Additionally, if the number is in the range 0x0001 to 0x0008, 0x000D to 0x001F, 0x007F to 
 0x009F, 0xFDD0 to 0xFDEF, or is one of 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, or 0x10FFFF, then this is a parse error.

我很感兴趣这种排除背后的原因/动机是什么?

1 个答案:

答案 0 :(得分:3)

它们是导致互操作性问题的代码点,无论是使用XML / XHTML文档还是使用现有的HTML解析器。因为它们都没有任何明显的有效用途,所以应该避免使用它们。

非XML字符(U + FDD0-FDEF和U + NFFFE-F)和控制字符U + 0000-8; 0D-1F在XML 1.0中无效。 0x80-0x9F范围内的字符引用在XML和HTML解析器中产生不同的结果,这是由于前一个表中的替换(并且还有许多非浏览器HTML解析器没有实现这种奇怪的历史怪癖)。