簡體   English   中英

IRI是否有效作為HTML屬性值?

[英]Are IRIs valid as HTML attribute values?

使用包含非ASCII字符的IRI作為屬性值(例如對於href屬性)而不是URI,這是有效的HTML嗎? HTML風格(HTML和XHTML,4和5)之間是否有任何差異? 至少RFC 3986似乎暗示它不是。

我意識到使用百分比編碼可能更安全(關於舊的和不知道IRI的軟件),但我正在尋找關於標准的確定答案。

到目前為止,我已經使用W3C驗證器完成了一些測試,並且URI中未轉義的unicode字符不會觸發HTML 4/5和XHTML 4/5文檔類型的任何警告或錯誤(但當然沒有錯誤消息也沒有'意味着沒有錯誤)。

至少chrome還支持原始的UTF-8 IRI,但在觸發HTTP請求之前,它們會逃脫它們。 此外,我的Web服務器(lighttpd)似乎在HTTP請求中以百分比編碼和未編碼形式支持UTF-8字符。

HTML 4.01非常簡單。 不同的屬性對它們可以包含的內容有不同的規則,但是如果我們在<a>元素上處理href屬性,那么HTML 4規范,B.2.1節屬性值中的非ASCII字符部分說:

......以下href值是非法的:

<A href="http://foo.org/Håkon">...</A>

HTML5與眾不同。 它表示IRI是有效的,只要它們符合一些附加條件。

如果至少滿足下列條件之一,則URL是有效的URL:

  • URL是有效的URI引用[RFC3986]。

  • URL是有效的IRI引用,它沒有查詢組件。 [RFC3987]

  • URL是有效的IRI引用,其查詢組件不包含未轉義的非ASCII字符。 [RFC3987]

  • URL是有效的IRI引用,URL的Document的字符編碼是UTF-8或UTF-16編碼。 [RFC3987]

XHTML 1.x遵循與HTML 4.01相同的規則。

XHTML5與HTML5相同。

如有疑問,請閱讀官方HTML規范以獲得明確的答案。

HTML 4根本不支持IRI。 它們必須按照RFC 3987第3.1節編碼為URI,或者將非ASCII URI數據編碼為UTF-8,每個HTML4編碼百分比。 第B.2.1節

根據HTML5第2.6節 ,HTML 5在允許URL的所有地方都支持URI和IRI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM