1. ホーム
  2. http-headers

[解決済み] HTTPヘッダにはどのような文字エンコーディングを使用すればよいですか?

2022-05-11 18:02:03

質問

HTMLの特殊文字(✰)を使っているのですが( http://html5boilerplate.com/ を使います。 Server HTTP-header に追加して、それが仕様に従って "allowed" されているかどうか疑問に思っています。

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

  • IE8では✰は ではなく が正しくレンダリングされません。

  • w3.org HTML バリデーターは ではなく を正しくレンダリングしません (" を表示します)。 â° と表示されます)。

今、私は文字エンコーディングにあまり熱心ではありません......率直に言って、私はあまり気にしていません。)


この格差は、異なるパーサー/ブラウザ/エンジン/(いわゆる何でも)のバグが原因ですか?

HTTP-header "value" のために許可された文字のリストか、このための仕様がありますか?

どのように解決するのですか?

簡単に言うと、ASCII のみ動作が保証されています。後方互換性のためにいくつかの非 ASCII バイトが許可されていますが、表示できるようにはなっていないはずです。

HTTPbis はあきらめました。 をあきらめ、ヘッダには ASCII 以外の有用なエンコーディングがないことを指定しました。

歴史的に、HTTP はフィールドのコンテンツにテキストを含めることを許可してきました。 ISO-8859-1] のテキストをフィールドコンテンツとして許可し、他の文字セットは [RFC2047] のエンコーディングによってのみサポートしてきました。 RFC2047] のエンコーディングでサポートされています。 実際には、ほとんどの HTTP ヘッダー フィールドの値は、US-ASCII文字セット[USASCII]のサブセットのみを使用します。 新しく定義されたヘッダーフィールドは、そのフィールド値を以下のものに 制限するべきである[SHOULD]。 US-ASCIIオクテットに限定するべきである[SHOULD]。 受信者は、フィールドの内容(obs-text)に含まれる他のオクテットを、op コンテンツ(obs-text)の他のオクテットを不透明なデータとして扱うべきである(SHOULD)。


以前は1999年のRFC2616で定義されていました。

の単語は、ISO-8859-1 [22]以外の文字セットからの文字を含んでもよい(MAY)。 8859-1 [22]以外の文字セットからの文字を含んでもよい(RFC 2047 [14]の規則に従ってエンコードされた場合のみ)。

であり、RFC2047は MIME エンコーディング であるため、そうなる。

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

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