文字コードを変換してCSVをファイルを読み込む【PHP】

2021-07-06

Contents

概要

PHPで、CSVファイルをPHPで読み込む際に、Windowsで編集したCSVファイルを読み込むと文字化けをおこします。Linuxサーバーだと文字コードがUTF-8で、Windowsだと大抵はSJISなので文字化けが発生します。

CSVファイルは、「SplFileObject」をつかっているので、「mb_convert_encoding」ではなく「mb_convert_variables」を使って文字コードを変換してCSVファイルを読み込みます

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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」を参考にしてください

スポンサーリンク

0
0

プログラミングphp

Posted by admin