2015-10-19 28 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」'符合「任何字符串值」的家族。 –

相關問題