2010/02/03

RSS2に対応する為に文字コードの統一

フィードのチェックはfeedanalizerから

URL : http://フィーダーのURL
ステータス : OK (200)
サーバー : Apache/2.0.52 (CentOS)
更新時間 : 不明
ファイルサイズ : 不明
コンテンツタイプ : application/xml ("charset" は "us-ascii" になります)
スペック : RSS2.0 encode=utf-8
タイトル : タイトル
警告 このサーバー(または拡張子)は If-Modified-Sinceに対応しません。
警告 サーバーの "charset" と フィードの "encode" を一致させることをお薦めします。

構文を確認したところ問題はありませんでした。

となったらhtaccessで制御
#サーバーの "charset" と フィードの "encode" をUTFで一致させる
AddType "application/xml; charset=UTF-8" xml

#xmlのIf-Modified-Sinceに対応
AddHandler default-handler xml

忘れがちな最後の改行。忘れると機能しない。

8. HTTP 1.1によるXML文書構成単位の配送

サーバがXML文書構成単位を配送するときの文字符号化スキームとしては,UTF-16又はUTF-8のいずれかを使用する。

参考 1 ISO-2022-JP及び日本語EUC(圧縮形式)も許容する予定であったが, [JIS X 0221]及び [Unicode 2.0]への変換表を一つに決定できないため, 現在はそれを見合わせている。変換表を一意に確定させてこれらを許容する可能性は残されている。この標準情報(TR)で導入した複数の名前をそのまま許容する可能性も残されている。

参考 2 交換性が保証されないことを了解した上で, ISO-2022-JP及び日本語EUC(圧縮形式)を使用するのは利用者の自由である。

HTTP 1.1([IETF RFC 2068])による配送では,メディアタイプtext/xml又はapplication/xmlを用い,charsetパラメタを正しく付ける。メディアタイプがapplication/xmlであり,XML文書中の BOM又は符号化宣言で文字符号化スキームを明示してある場合だけは, charsetパラメタを省略できる。

参考 1 [IETF RFC 2376]はcharsetパラメタを強く推奨している。text/xmlの場合は,charsetパラメタとして指定されたcharset名がBOM及び符号化宣言より優先する。省略した場合はUS-ASCIIであると見なされる。

参考 2 US-ASCIIで符号化されたXML文書の場合は,メディアタイプが text/xmlの場合でもcharsetパラメタを省略できるが,US-ASCIIの文書は日本語文字を含んでいないので,この標準情報(TR)の適用範囲外である。

参考 3 サーバの設定によって,XML文書構成単位を格納したファイルと,メディアタイプ(text/xml又はapplication/xml)及び文字符号化スキームを表すcharset名とを関係付けなければならない。正しく設定されていれば,サーバがXML文書構成単位を配布するとき,設定されたメディアタイプがcontent-type フィールドの値として利用され,設定されたcharset名がメディアタイプのcharset パラメタの値として利用される。

クライアントは,このcharsetパラメタに従って文字符号化スキームを判定する。text/xmlのcharsetパラメタが省略された場合はUS-ASCIIであると判定する。 application/xmlのcharsetパラメタが省略された場合は情報交換用ファイルと同様に自動検出する。

参考 この規定は[IETF RFC 2376]にある。