2015-10-19 95 views
0

对于一个特殊的值,我试过HTML <option value="&#0;">unspecified</option>,但似乎NUL字符不是用HTML解释的。我得到。我想知道为什么,以及除了NUL之外还有什么其他不寻常的UTF-8字符可能需要注意。为什么HTML不能包含NUL字符? (转换为0xFFFD /“%EF%BF%BD”)

这是a fiddle to demonstrate我在说什么。

<select><option value="&#0;">&#0;</option></select> 

正如你可以在上面看到,下拉被设定与NUL值,但它们都转换为JavaScript时检查的结果。

var select = document.querySelector('select') 
inspect() 
select.options[0].value = '\u0000' 
select.options[0].label = '\u0000' 
inspect() 
select.innerHTML = select.innerHTML 
inspect() 
function inspect() { 
    alert(encodeURIComponent(select.options[0].value) 
     + ',' 
     + encodeURIComponent(select.options[0].label) 
     + ',' 
     + select.innerHTML) 
} 

JavaScript可以专门设置valuelabel\u0000和它的作品,但由于某些原因,这是不能够在HTML中呈现。

您能解释为什么和/或指向相关文档吗?还有其他的UTF-8字符会以相似的方式替换吗?

+2

你认为它被渲染为什么? – rollingBalls

+0

在W3C HTML中[8.2.2.5预处理输入流](http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream)的第二个注释中提到了'NULL'/XHTML建议。它读取为“取决于”给我:P – usr2564301

+0

@rollingBalls,我期待所有三个警报中的'%00,%00,<选项值=“NUL”> NUL' - 其中NUL是浏览器特定的表示的NUL角色。 –

回答

0

NUL无效。 HTML是基于文本的文档。只能输入字符串。

https://developers.whatwg.org/elements.html#attributes

除非另有规定,属性HTML元素可以具有任何 字符串值,包括空字符串。除明确指出的 之外,对于可在此类 属性中指定哪些文本没有限制。

+0

除非明确说明NUL,否则我认为引用意味着NUL被允许(或应该)允许 - 我一直认为“\ u0000”'符合“任何字符串值”的家族。 –

相关问题