[PHP-users 26428] ExcelとWordファイルのダウンロードの文字化け

斉藤康輔 saitou @ movin.co.jp
2005年 8月 12日 (金) 01:37:54 JST


いつもお世話になっております。

OS:Windows PHP:5.03  MySQL:UTF-8 Apache:UTF-8 で作業をしています。ExcelとWordファイルをサーバーからheaderを用いて、ダウンロードしたいのですがどうも文字化けしてしまいます。

ファイルのアップロードは

-----以下、ファイルのアップロードのコード-------------------------
//ファイル名をWindowsの文字コードであるShift_JISに変更する
$file_name=$resume_dir."/".mb_convert_encoding($_FILES['file1']['name'], 
"Shift_JIS");
move_uploaded_file($_FILES['file1']['tmp_name'], $file_name);
-------------------------------------------------------------

とやることで文字化けもなくうまくアップロードできたのですが($resumeはMySQLから引っ張ってきたオブジェクトです。)、

そのファイルをダウンロードするときに、過去ログを参考に

-----以下、ファイルのダウンロードのコード-------------------------
$file_name=mb_convert_encoding($resume->getResumeName(), "Shift_JIS");
$path_name=RESUME_DIR."/".$resume->getCandidateId()."/".$file_name;

mb_http_output("SJIS");
header("Content-disposition: attachment; filename=\"$file_name\"");
header("Content-Type: application/application/vnd.ms-excel");
header("Cache-Control: public");
mb_http_output("SJIS"); // HTTP文字コードをSJISに明示的に設定
readfile($path_name);
exit();
-------------------------------------------------------------

としてもpdf、txtに関しては何の問題なくダウンロードできるのですが、xls、docに関しては完璧に文字化けしてしまいます。

文字化けするファイルの先頭に必ず「ソ・ソ・」と含まれているのも気がかりです。

何かお気づきの方いらしましたら、教えていただけると幸いです。

斉藤



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