初めて質問いたします。
mySQL&PHPでcsvファイルを生成、Excelで開くためにSJIS-winでダウンロードした時に一部文字化けするのを防ぎたいです。
$sql = "SELECT * FROM xxxxxxxx";
$stmt = $dbh->prepare($sql);
$stmt->execute();
//CSV文字列生成
$csvstr = "項目1,項目2,住所\r\n";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$csvstr .= $row['csv_header1'] . ",";
$csvstr .= $row['csv_header2'] . ",";
$csvstr .= $row['csv_address'] . "\r\n";
}
//CSV出力
$fileNm = "list_csv.csv";
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$fileNm);
echo mb_convert_encoding($csvstr, "SJIS-win", "UTF-8");
exit();
とした時に、全体的にはしっかり出力されるのですが、一部地名に使われている「埇」が空白になってしまいます。
仮に「csv_address」に「大埇12-34」など「埇」を含む地名が入っている時にExcelで開いたcsv上では「大 12-34」のようになってしまいます。
いわゆるダメ文字なんだと思うのですが、対応の方法が分かりません。
御知恵を拝借できればと思います。
補足情報など必要に応じて追加いたします。よろしくお願いします。
※追記
Excelは比較的古いバージョンで、utf-8のcsvを読むことが出来ません。
※追記2
ブラウザで出力してみたところでは表示されています。
その上でダウンロードしたCSVファイルをExcel、テキストエディタ、googleのスプレッドシートで表示した所、Excelでは表示されない、テキストエディタ、スプレッドシートでは文字化け(嘯X2−1)、という状態でした。
※解決後の追記
この度はありがとうございました。
結果としてはmacの環境においてダメ文字の変換がうまく行かず表示されていない、という状況のようです。どの段階で失敗しているかの確認はしておりません。
mac版Excelのバージョンは2011(14.4.3)です。
windows版では問題なく表示されておりました。使用環境がwindowsですので解決とさせていただきました。
ありがとうございました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/02 11:46
退会済みユーザー
2016/02/02 12:32
退会済みユーザー
2016/02/02 12:33
2016/02/03 03:53