HTTP ヘッダーにはどの文字エンコーディングを使用すればよいですか? 質問する

HTTP ヘッダーにはどの文字エンコーディングを使用すればよいですか? 質問する

私は「楽しい」HTML特殊文字(✰)を使用しています(http://html5boilerplate.com/詳細については、ServerHTTP ヘッダーを参照してください。仕様ごとに「許可」されているかどうかが疑問です。

  • Windows Xp Pro SP 3 の Chrome 開発ツールのネットワーク タブを使用すると、✰ が問題なく表示されます。

  • IE8では✰はない正しくレンダリングされました。

  • w3.orgのHTMLバリデータはない正しくレンダリングします (â°代わりに「 」が表示されます)。

さて、私は文字エンコードにあまり興味がありません...そして率直に言って、それほど気にしていません。ただ、言われたから盲目的に UTF-8 を使用しているだけです。:-)


この差異は、さまざまなパーサー/ブラウザ/エンジン/(何と呼ばれているかは問いません) のバグによって発生したのでしょうか?

これについての仕様、または HTTP ヘッダーの「値」に許可される文字のリストはありますか?

ベストアンサー1

簡単に言うと、ASCII のみが動作することが保証されています。一部の非 ASCII バイトは下位互換性のために許可されていますが、表示可能であるとは想定されていません。

HTTPbisは諦めたヘッダーには ASCII 以外の有用なエンコードがないことを明記しました。

歴史的に、HTTP は ISO-8859-1 文字セット [ISO-8859-1] のテキストを含むフィールド コンテンツを許可しており、他の文字セットは [RFC2047] エンコードの使用を通じてのみサポートされています。実際には、ほとんどの HTTP ヘッダー フィールド値は US-ASCII 文字セット [USASCII] のサブセットのみを使用します。新しく定義されたヘッダー フィールドは、フィールド値を US-ASCII オクテットに制限する必要があります。受信者は、フィールド コンテンツ (obs-text) 内の他のオクテットを不透明なデータとして扱う必要があります。


以前、1999 年の RFC 2616 では次のように定義されていました。

*TEXTの単語には、RFC 2047 [14]の規則に従ってエンコードされている場合にのみ、ISO-8859-1 [22]以外の文字セットの文字を含めることができます。

RFC 2047はMIME エンコーディングつまり、次のようになります。

=?UTF-8?Q?=E2=9C=B0?=

しかし、多くのクライアントが(もしあったとしても)それをサポートしているとは思えません。

おすすめ記事