ブログ   うい・らぶ・だいびんぐ   Cube 別館   flag_uk 英語サイト   ポータル
twitter Twitter でログイン
ホーム   最新ニュース   フォーラム   ダウンロード   写真集   リンク集   お問い合わせ RSS

SmartSection > Tools > PHP > 日本語ファイル名でダウンロードする (調査)

日本語ファイル名でダウンロードする (調査)

投稿者: Ken 掲載日: 2011-5-5 (9528 回閲覧)
日本語ファイル名でダウンロードする方法を調べてみた。
ブラウザとエンコードによる違いを表にまとめた。

これを基にPHPコードを作成した

ブラウザとエンコードによる違い

UTF-8 の場合

urlenocdemimerfc2231風rfc2231
IE× 文字化け× 変換文字× 変換文字× 無視
Firefox× 注2× 変換文字
Chrome× 無視
Opera× 注3× 変換文字
Safari× 変換文字× 変換文字× 無視

SJIS の場合

urlenocdemimerfc2231風rfc2231
IE○ 注1× 変換文字× 変換文字× 無視
Firefox× 注2× 変換文字
Chrome× 無視
Opera×× 注3× 変換文字
Safari×× 変換文字× 変換文字× 無視

ファイル名で使えない文字 の場合

\ / : * ? " < > |

IE:     アンダーバー(_)にエスケープ。半角空白もアンダーバーにエスケープ。
Firefox: アンダーバー(_)にエスケープ
Chrome:  アンダーバー(_)にエスケープ
Safari:  アンダーバー(_)にエスケープ
Opera:   その文字の前半だけになったり、後半だけになったりする
         例「a?b」->「a」 「a\b」->「b」

まとめ

Firefox Chrome Opera では UTF-8 の RFC2231 がよさそうです

IE は SJIS を素のままでということですね
IE も RFC2231 に対応するといいですが、その気がないようです

Safari は UTF-8 で素のままか、日本語には対応しないということかな

結果の記号の意味

◎:最善。ファイル名に文字コード種別が含まれるため環境に依存しない
○:妥協。ファイル名に文字コード種別が含まれるため環境依存がある
△:英数字だけなら「sample,zip」のように正しいファイル名になる。日本語では「あ」が「%82%A0」のようにurlエンコードされた文字になる。間違えではないが、使い難い
× 変換文字: mime「=?UTF-8?B=...=?=」やrfc2231「utf-8'ja'....zip」のようにエンコードされた文字列を素の文字列と解釈する
× 無視: フェイル名が無視される。urlがファイル名として代用される

注記

注1:空白があるとアンダーバーに変換されるが、許容範囲だろう。「あ い.zip」->「あ_い.zip」
注2:空白があると以降が無視される。「あ い.zip」->「あ」
注3:「=」だけになる。「あ い.zip」->「=」
   変換文字を素の文字と解釈して ? 以降のみになったため、と思われる

エンコード

素:何もせず
urlencode: URLエンコードする PHPのrawurlencode()を使用
mime: MIMEエンコードする PHPのmb_encode_mimeheader()を使用
rfc2231風: RFC2231では *= という記述をすることなってるが、通常の * なしのもの
rfc2231: RFC2231に準拠したエンコードをする
例: title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A

ブラウザのバージョン

IE: 8.0
Firefox: 4.01
Chrome: 11.0
Opera:11.10
Safari: 5.05

Windows 7 環境: 2011年5月時点

参考

- 日本語ファイル名
- RFC2231: MIMEパアラメーター値と符号化単語拡張
- ファイル名で使えない文字
- wikipedia: 5C文字

- マイクロソフト: ファイルをダウンロードする ASP.NET Web ページで日本語ファイル名が文字化けする
Content-Disposition ヘッダのパラメータの文字コードのエンコード方式に関しては、RFC2231 に基づくべきですが、現行の Internet Explorer はこのエンコード方式をサポートしていません。

ページ移動
良く読まれた記事 日本語ファイル名でダウンロードする (コード) Facebook ログイン - PEAR 次の記事
投票者の合計: 0
平均: 0
投稿された内容の著作権はコメントの投稿者に帰属します。
スポンサー

寄付
配布しているソフトが気に入ったら、寄付をお願いします。
寄付

PageRank のページ毎の表示
http://linux.ohwada.jp/ modules/smartsection/item.php?
PageRank 0 PageRank

メインメニュー

マニュアル

ログイン