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

lxg*_*xgr 8 html uri urlencode utf-8

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

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

到目前为止,我已经做了一些测试,与W3C验证,并在URI是不会触发与HTML 4/5和4/5 XHTML文档类型的任何警告或错误转义Unicode字符(当然没有错误消息没有按"意味着没有错误).

至少chrome还支持原始的UTF-8 IRI,但在触发HTTP请求之前,它们会逃脱它们.此外,我的Web服务器(lighttpd)似乎在HTTP请求中以百分比编码和未编码形式支持UTF-8字符.

Alo*_*hci 6

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相同.