2012-12-28 15 views
8

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

エンコード率を使用することは、以前のIRI対応ソフトウェアに比べて安全である可能性が高いと認識していますが、私はその標準に関して明確な答えを探しています。

これまではW3C validatorでいくつかのテストを行いましたが、URIのエスケープされていないUnicode文字はHTML 4/5とXHTML 4/5のdoctypesで警告やエラーを引き起こしませんメッセージはエラーがないことを意味しません)。

少なくともクロムは未処理のUTF-8 IRIもサポートしますが、HTTPリクエストを開始する前にパーセントエスケープします。また、私のWebサーバー(lighttpd)は、HTTPリクエストでエンコードされていない形式でも、パーセントエンコードでUTF-8文字をサポートしているようです。

+0

[RFC 3987のセクション1.2](http://tools.ietf.org/html/rfc3987#section-1.2)には、[RFC 2616](http://tools.ietf。 org/html/rfc2616)はIRIをサポートしていないので、それらを扱うことは標準外である。あなた(またはあなたのブラウザ、または誰か)は、参照されたリソースを取得する前に、指定されたIRIを最初にURIにマップする必要があります。 – Oliver

+0

[URLのUnicode文字]の重複可能性(http://stackoverflow.com/questions/2742852/unicode-characters-in-urls) –

答えて

6

HTML 4.01は簡単です。異なる属性は、それらに含まれることができるものになど、さまざまなルールを持っているが、我々は<a>要素にhref属性を扱っている場合は、HTML 4 spec, section B.2.1 Non-ASCII characters in URI attribute valuesは言う:

...以下のhrefの値が不正です:

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

HTML5とは異なります。

  • URLが有効なURI参照[RFC3986]である:それは、以下の条件のうちの少なくとも1つ が保持している場合IRIs are valid providing they comply with some additional conditions.

    URLが有効なURLであると言います。

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

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

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

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

XHTML5はHTML5と同じです。

2

不明な点がある場合は、最終回答の正式なHTML仕様をお読みください。

HTML 4はIRIをまったくサポートしていません。彼らはRFC 3987 Section 3.1あたりのURIとしてエンコード、またはHTML4 Section B.2.1

HTML 5はHTML5 Section 2.6ごとに、URLが許可されているすべての場所で両方のURIとアイリスをサポートしているあたりのパーセントエンコーディングをUTF-8などの非ASCII URIデータをエンコードする必要があります。

関連する問題