[PHP-users 31757] Re: 日本語ファイル名の保存について

KUBO Tetsuro kubo @ calico.co.jp
2007年 3月 27日 (火) 09:45:54 JST


久保です。

私も同じ問題で悩みました。

> もし、ファイルへ直接アクセスしなくてもいいのであれば、header関数で、filenameを吐き
> 出すスクリプトを作って、それを経由させてみてはいかがでしょうか。

私もファイルをスクリプトから読み込み、headerを出力してダウンロードさせ
ました。

header("Content-Disposition: attachment; filename=\"".$filename."\"");

試行錯誤した結果、IE(win版)ではページのエンコーディングが何であれファ
イル名はSJISだと文字化けしませんでした。FireFox(win版,mac版,Linux版)だ
とページの文字コードと同じ文字コードでファイル名をエンコーディングしな
いと文字化けしました。しかし、mac版safari だとSJISでもEUCでもJISでも
UTF8でも日本語は全て文字化けしてしまうので実装をあきらめた経緯がありま
す。

ちなみにテスト中に

header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Type: ".$content_type);

で間違ったContent-Dispositionを指定したところFireFoxで困ったことになり
ました。たまたま使っていたPCをリカバリしたばかりでFireFoxにとって初め
てのファイルタイプだったため、間違った関連づけがされてしまいました。レ
ジストリやabout:configを修正してもだめで、いろいろ探したところ、
FireFoxは独自にContent-TypeとContent-Dispositionの関連づけを管理してい
ることが分かり、profilesのmimeTypes.rdfを修正することで復旧しました。


PHP-users メーリングリストの案内