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

IRI是否有效作为HTML属性值?,第1张

概述使用包含非ASCII字符的IRI作为属性值(例如对于href属性)而不是URI,这是有效的 HTML吗? HTML风格( HTML和XHTML,4和5)之间是否有任何差异?至少 RFC 3986似乎暗示它不是. 我意识到使用百分比编码可能更安全(关于旧的和不知道IRI的软件),但我正在寻找关于标准的明确答案. 到目前为止,我已经使用W3C validator进行了一些测试,并且URI中未转义的un 使用包含非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相同.

总结

以上是内存溢出为你收集整理的IRI是否有效作为HTML属性值?全部内容,希望文章能够帮你解决IRI是否有效作为HTML属性值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存