概要
PHPで、CSVファイルをPHPで読み込む際に、Windowsで編集したCSVファイルを読み込むと文字化けをおこします。Linuxサーバーだと文字コードがUTF-8で、Windowsだと大抵はSJISなので文字化けが発生します。
CSVファイルは、「SplFileObject」をつかっているので、「mb_convert_encoding」ではなく「mb_convert_variables」を使って文字コードを変換してCSVファイルを読み込みます
<?php
function csv_to_array($$file) {
$file = new SplFileObject($file);
$file->setFlags(SplFileObject::READ_CSV);
// csvを配列に入れる
$results = array();
foreach ($$file as $line) {
$results[] = $line;
}
// SJISからURF-8にエンコーディング
mb_convert_variables('UTF-8', array('SJIS-win'), $line);
return $results;
}
?>
「mb_convert_variables」の引数には以下を指定します。
第1引数:変換後の文字コード(例ではUTF-8)
第2引数:変換前の文字コード(例ではSJIS-win)
第3引数:変換する変数への リファレンス。
詳細は、PHPマニュアルの「mb_convert_variables」を参考にしてください



コメント