• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:csvファイル出力時に文字化けしてしまう。)

csvファイル出力時の文字化け問題

このQ&Aのポイント
  • csvファイルを作成して保存すると、Excelで開くと文字化けしてしまう問題が発生しています。
  • 保存する際に「右クリック→ファイルの保存」ではなく、「左クリック」するとブラウザ上で文字化けしません。
  • ヘッダーには<meta http-equiv="Content-type" content="text/html; charset=utf-8">を設定しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ヘッダにutf-8って書いてあってfirefoxでちゃんと見えるのなら、 そのcsvファイルはutf-8で書いてあるんでしょう。それをExcelで開 けば、見えないのが当然です。Excelはutf-8非対応ですから。 phpのマニュアルで「マルチバイト文字列」に関するあたりを読み、 日本語版Excelで対応できるエンコーディングで出力して下さい。 具体的にはfwriteの中で$csvDataを加工してやるだけでいいんじゃ ないですかね。ザッと見た感じでは、Shift_JISかutf-16あたりがよ さそうです。 私的には、csvをExcelで開くのは負け組ですけどね。あいつは勝手 な解釈で余計なことをするから。

参考URL:
http://php.benscom.com/manual/ja/book.mbstring.php
macus
質問者

お礼

早速の回答ありがとうございます。 >Excelはutf-8非対応ですから。 そうなんですね!! だからか~ >私的には、csvをExcelで開くのは負け組ですけどね。あいつは勝手 な解釈で余計なことをするから。 え?そうなんですか?? ただ、今回はユーザーさんに使ってもらうプログラムを作りたいので、Excelが一番扱いやすいかな~って思っています。 参考URLもありがとうございます。 fwrite($fp,mb_convert_encoding($csvData,'SJIS','UTF-8')); と書き直して旨く行きました!! ありがとうございます。

その他の回答 (3)

回答No.4

ExcelはUTF-8には対応していないようです。 Shift-JIS、UTF-16等で保存してください。

macus
質問者

お礼

回答ありがとうございます。 そうみたいですね!全く知りませんでした。 #2さんの方法で旨く行きました!! ありがとうございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

確実にやるならPEARのSpreadsheet_Excel_Writerあたりで 直接xls形式にデータを吐き出してやってください。 http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php なおその場合でも文字形式はSJISに変換してやる必要はあります。

macus
質問者

お礼

回答ありがとうございます。 うっ!PEARですか・・・まだPHPも覚えたてですので、折角の参考URLを見ましたが理解できませんでした。。。 PHPが解ってきたら挑戦してみますね。 ありがとうございました。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

出力されるファイルの文字コードはなんで書かれていますか? また、「適当なデータ」の文字コードは何で書かれていますか? それがあっていなければ、文字化けします。

macus
質問者

補足

早速の回答ありがとうございます。 それは何処で設定すれば良いのでしょうか? 文字コードに関する宣言的な事は、metaタグ以外では何も無いです。 適当なデータは、フォームに入力されたデータ($_POST[...]で取得)、APIを使ってデータを使っています。 何処で、そういった宣言をすればいいのでしょうか?

関連するQ&A