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

Hajime Chiba apple @ v7.com
2007年 3月 27日 (火) 04:55:38 JST


こんにちは。千葉と申します。

以前に同じ問題で悩んだことがあるったのですが…
どのように解決したか、いまひとつ記憶があいまいです・・・

なにか参考になれば。

07/03/26 に uto-s<uto-s @ ymail.plala.or.jp> さんは書きました:
> 「対象をファイルに保存」とすると、ファイル名が文字化けして
> (中略)
> ※サイト上に日本語のファイル名は正常に表示され、リンク先の

# PHPのコードそのものはSJISで記述されている、Apacheからクライアントへの出力が
 SJISで行われている(mb_convert_encodingでSJISを指定して化けていない)という
 前提で認識しています。
# また、保存するファイル名が化けるだけで、ファイルそのものをダウンロードすることは
 できるということですよね?(外していたらごめんなさい)

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

障害そのものはPHPの問題ではなく、Apache側の問題ではないかと思います。
(コードと障害内容を見る限り、「対象をファイルへ保存」はPHPを介していない)
Apacheの DefaultCharset ディレクティブを見直してみるといいかもしれません。

おそらく、OS上のファイル名がEUC-JPかUTF、Apacheが吐き出している応答がSJIS、
という具合で化けてしまっているのだと思います。


メールからは細かい動作の切り分けができないので、何とも言えませんが、何か参考に
なれば幸いです。



07/03/26 に uto-s<uto-s @ ymail.plala.or.jp> さんは書きました:
> こんにちは。konaです。
>
> ファイル名が日本語のファイルをウェブ上からアップロードして、
> アップロードされたファイルをウェブサイトに表示する処理のところで、
> 「対象をファイルに保存」とすると、ファイル名が文字化けして
> どうしても保存できません。
>
> ※サイト上に日本語のファイル名は正常に表示され、リンク先の
> ファイルも正常に表示できています。
>  サーバ側にアップロードされたファイルも文字化けは起こさず
>  日本語で保存されております。
>
> (環境)
> RedHat Linux+Apache
> PHP 4.3.* (EUC-JP)
> MySQ 3.23.58 (EUC-JP)
>
> (日本語ファイルを表示させている部分)
> <?
> $temp = "日本語ファイル.xls";
> $mb_temp = mb_convert_encoding($temp,'SJIS','auto');
> $url_temp = urlencode($mb_temp);
> ?>
> <a href="./upload/<? echo $url_temp; ?>" target="_blank"><? echo $temp;
> ?></a>
>
> googleで参考になるようなサイトを色々探し試してみましたが、
> うまく解決できませんでした。
>
> どなたか解決方法お分かりになられる方おられましたら
> ご教授下さい。
>
> よろしくお願い致します。
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


-- 
--
産業能率大学 経営学部 経営学科
千葉 玄 (Hajime CHIBA)
mail: a3027180 @ mi.sanno.ac.jp
Skype: gen_chiba


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