8

hrefURI の代わりに非 ASCII 文字を含む IRI を属性値 (属性など) として使用することは有効な HTMLですか? HTML フレーバー (HTML と XHTML、4 と 5) の間に違いはありますか? 少なくともRFC 3986は、そうではないことを暗示しているようです。

パーセントエンコーディングを使用する方が(古いIRIを認識しないソフトウェアに関して)おそらく安全であることはわかっていますが、標準に関して決定的な答えを探しています。

これまでのところ、W3C バリデーターでいくつかのテストを行いましたが、URI 内のエスケープされていない Unicode 文字は、HTML 4/5 および XHTML 4/5 doctypes で警告またはエラーをトリガーしません (もちろん、エラー メッセージがない場合は発生しません)。 t はエラーがないことを意味します)。

少なくとも chrome は未加工の UTF-8 IRI もサポートしていますが、HTTP 要求を発行する前にそれらをパーセント エスケープします。また、私の Web サーバー (lighttpd) は、HTTP 要求で UTF-8 文字をパーセント エンコードされた形式とエンコードされていない形式でサポートしているようです。

4

2 に答える 2

6

HTML 4.01 は十分に単純です。属性ごとに含めることができるルールは異なりますが、<a>要素の href 属性を扱う場合、HTML 4 仕様のセクション B.2.1 URI 属性値の非 ASCII 文字には次のように記載されています。

... 次の href 値は不正です:

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

HTML5は違います。いくつかの追加条件に準拠していれば、IRI は有効であると書かれています。

次の条件の少なくとも 1 つが当てはまる場合、URL は有効な URL です。

  • URL は有効な URI 参照 [RFC3986] です。

  • URL は有効な IRI 参照であり、クエリ コンポーネントはありません。[RFC3987]

  • URL は有効な IRI 参照であり、そのクエリ コンポーネントにはエスケープされていない非 ASCII 文字が含まれていません。[RFC3987]

  • URL は有効な IRI 参照であり、URL のドキュメントの文字エンコーディングは UTF-8 または UTF-16 エンコーディングです。[RFC3987]

XHTML 1.x は、HTML 4.01 と同じ規則に従います。

XHTML5 は HTML5 と同じです。

于 2012-12-29T02:22:24.100 に答える
2

疑問がある場合は、公式の HTML 仕様を読んで決定的な答えを見つけてください。

HTML 4 は IRI をまったくサポートしていません。RFC 3987 セクション 3.1に従って URI としてエンコードするか、非 ASCII URI データをHTML4 セクション B.2.1に従ってパーセント エンコーディングを使用して UTF-8 としてエンコードする必要があります。

HTML 5 は、 HTML5 セクション 2.6に従って、URL が許可されているすべての場所で URI と IRI の両方をサポートします。

于 2012-12-29T02:30:27.000 に答える