[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 メーリングリストの案内