微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IRI是否有效作为HTML属性值?

使用包含非ASCII字符的IRI作为属性值(例如对于href属性)而不是URI,这是有效的 HTML吗? HTML风格( HTML和XHTML,4和5)之间是否有任何差异?至少 RFC 3986似乎暗示它不是.

我意识到使用百分比编码可能更安全(关于旧的和不知道IRI的软件),但我正在寻找关于标准的明确答案.

到目前为止,我已经使用W3C validator进行了一些测试,并且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 spec,section B.2.1 Non-ASCII characters in URI attribute values说:

… the following href value is illegal:

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

HTML5是不同的.它说IRIs are valid providing they comply with some additional conditions.

A URL is a valid URL if at least one of the following conditions
holds:

  • The URL is a valid URI reference [RFC3986].

  • The URL is a valid IRI reference and it has no query component. [RFC3987]

  • The URL is a valid IRI reference and its query component contains no unescaped non-ASCII characters. [RFC3987]

  • The URL is a valid IRI reference and the character encoding of the URL’s Document is UTF-8 or a UTF-16 encoding. [RFC3987]

XHTML 1.x遵循与HTML 4.01相同的规则.

XHTML5与HTML5相同.

原文地址:https://www.jb51.cc/html/227394.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐