文字コードを変換して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;
}

?>

mb_convert_variables」の引数には以下を指定します。
第1引数:変換後の文字コード(例ではUTF-8)
第2引数:変換前の文字コード(例ではSJIS-win)
第3引数:変換する変数への リファレンス。

詳細は、PHPマニュアルの「mb_convert_variables」を参考にしてください

スポンサーリンク