- ベストアンサー
csvファイル出力時の文字化け問題
- csvファイルを作成して保存すると、Excelで開くと文字化けしてしまう問題が発生しています。
- 保存する際に「右クリック→ファイルの保存」ではなく、「左クリック」するとブラウザ上で文字化けしません。
- ヘッダーには<meta http-equiv="Content-type" content="text/html; charset=utf-8">を設定しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ヘッダにutf-8って書いてあってfirefoxでちゃんと見えるのなら、 そのcsvファイルはutf-8で書いてあるんでしょう。それをExcelで開 けば、見えないのが当然です。Excelはutf-8非対応ですから。 phpのマニュアルで「マルチバイト文字列」に関するあたりを読み、 日本語版Excelで対応できるエンコーディングで出力して下さい。 具体的にはfwriteの中で$csvDataを加工してやるだけでいいんじゃ ないですかね。ザッと見た感じでは、Shift_JISかutf-16あたりがよ さそうです。 私的には、csvをExcelで開くのは負け組ですけどね。あいつは勝手 な解釈で余計なことをするから。
その他の回答 (3)
- magicalpass
- ベストアンサー率58% (378/648)
ExcelはUTF-8には対応していないようです。 Shift-JIS、UTF-16等で保存してください。
お礼
回答ありがとうございます。 そうみたいですね!全く知りませんでした。 #2さんの方法で旨く行きました!! ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
確実にやるならPEARのSpreadsheet_Excel_Writerあたりで 直接xls形式にデータを吐き出してやってください。 http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php なおその場合でも文字形式はSJISに変換してやる必要はあります。
お礼
回答ありがとうございます。 うっ!PEARですか・・・まだPHPも覚えたてですので、折角の参考URLを見ましたが理解できませんでした。。。 PHPが解ってきたら挑戦してみますね。 ありがとうございました。
- mnabe
- ベストアンサー率33% (427/1283)
出力されるファイルの文字コードはなんで書かれていますか? また、「適当なデータ」の文字コードは何で書かれていますか? それがあっていなければ、文字化けします。
補足
早速の回答ありがとうございます。 それは何処で設定すれば良いのでしょうか? 文字コードに関する宣言的な事は、metaタグ以外では何も無いです。 適当なデータは、フォームに入力されたデータ($_POST[...]で取得)、APIを使ってデータを使っています。 何処で、そういった宣言をすればいいのでしょうか?
お礼
早速の回答ありがとうございます。 >Excelはutf-8非対応ですから。 そうなんですね!! だからか~ >私的には、csvをExcelで開くのは負け組ですけどね。あいつは勝手 な解釈で余計なことをするから。 え?そうなんですか?? ただ、今回はユーザーさんに使ってもらうプログラムを作りたいので、Excelが一番扱いやすいかな~って思っています。 参考URLもありがとうございます。 fwrite($fp,mb_convert_encoding($csvData,'SJIS','UTF-8')); と書き直して旨く行きました!! ありがとうございます。