ようこそ!逆襲のニートブログへ

ブログ内検索

最近の記事

はてなブックマーク数

この日記のはてなブックマーク数

カテゴリー

月別アーカイブ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ダウンロードするファイル名が日本語だとダメ?

Webサイトからファイルをダウンロードさせるとき、ファイル名は日本語ではなくて、英語にしておいた方が良い。
日本語のファイル名にする場合は、適切な処理の追加が必要になる。

ダウンロード時に日本語ファイル名が文字化け

ダウンロードするファイルのファイル名に日本語が含まれると文字化けしてしまいます。
例えば「テストFile」→「ツテツスツトFile」のように。
インターネットを検索し、同じような問題を解決したページをいくつか見つけたのですが、私の場合には当てはまりませんでした。
何か解決のヒントはないでしょうか?



そもそも。

Content-Dispositionのfilenameによるダウンロードファイル名の指定は,HTTPでは使用しないほうがよいです。

Content-Dispositionは,そもそもMIMEで定義されたヘッダーで,HTTP/1.1を規定したRFC2616では定義されていません。これをHTTPでの転送時に指定に流用すること自体が議論されるべき問題だと個人的には思います。

なにはともあれ,Content-DispositionはMIMEの一部ですので,その中に非ASCII文字を含む場合には,RFC2047の規定にしたがってエンコードされるべきです。
例えば,「ほごほげ.txt」というファイル名は

Content-Disposition: attachment;filename="=?ISO-2022-JP?B?GyRCJFskNCRbJDIbKEIudHh0?="

のようにエンコードしてから指定するべきです。実際,Mozilla/Firefoxなどは,このように指定すれば,正しく指示されたファイル名でダウンロードすることができます。

ところがMSIEでは,この様に指定してもファイル名を正しく取得してくれません。
かわりに「ファイル名をUTF-8で表記したものをx-www-form-urlでエンコードする」という腐った仕様になっています。

つまり,Content-Dispositionでファイルをダウンロードするアプリケーションは,「仕様に従った正しいレスポンスを返す処理」と「MSIE専用の処理」の二つを用意し,User-Agentでクライアントの種類を判別して処理を切り替えるということが必要になります。

このようなややこしい事情があるため,HTTPで日本語のファイル名をやり取りすること自体をお奨めしません。



文字コード超研究 文字コード超研究
深沢 千尋 (2003/07)
ラトルズ
この商品の詳細を見る
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:
http://gooddays1.blog37.fc2.com/tb.php/310-d9d1f18c

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。