文字コードを変換してCSVをファイルを読み込む【PHP】
Contents
概要
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;
}
?>
<?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;
}
?>
<?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」を参考にしてください
ディスカッション
コメント一覧
まだ、コメントがありません