【发布时间】:2012-12-28 19:35:00
【问题描述】:
使用包含非 ASCII 字符的 IRI 作为属性值(例如 href 属性)而不是 URI 是否有效? HTML 风格(HTML 和 XHTML,4 和 5)之间有什么区别吗?至少RFC 3986 似乎暗示它不是。
我意识到使用百分比编码可能会更安全(对于较旧且不支持 IRI 的软件),但我正在寻找有关标准的明确答案。
到目前为止,我已经对 W3C validator 进行了一些测试,并且 URI 中未转义的 unicode 字符不会触发 HTML 4/5 和 XHTML 4/5 文档类型的任何警告或错误(但当然没有错误消息并不意味着没有错误)。
至少 chrome 还支持原始 UTF-8 IRI,但在触发 HTTP 请求之前会对其进行百分比转义。此外,我的网络服务器 (lighttpd) 似乎支持 UTF-8 字符的百分比编码以及 HTTP 请求中的未编码形式。
【问题讨论】:
-
注意Section 1.2 of RFC 3987 提到RFC 2616 定义的HTTP 确实不 支持IRI,因此处理它们超出了标准。您(或您的浏览器或其他人)需要先将给定的 IRI 映射到 URI,然后再尝试检索引用的资源。