気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 24 view

CSVファイルを読み取る処理で文字化けするとき

CSVファイルを読み込むPHPスクリプトで実行結果が文字化けする場合、CSVファイルの文字コードを確認してみましょう。

<?php
$fp = fopen("test.csv", "r");
while (!feof($fp)) {
    $line = fgetcsv($fp);
    echo "名前:$line[0] 出身:$line[1]<br />";
}
?>
西沢直木,千葉県
鈴木一郎,東京都

実行結果は次のように文字化けする場合があります。

読み取ったCSVが文字化け

読み取ったCSVが文字化け

典型的な原因はExcelから作成したCSVファイルです。Excelで作成したCSVファイルは通常、文字コードがShift-JISになっているはずです。

CSVの文字コードはShift-JIS

CSVの文字コードはShift-JIS

簡単な対策は、このShift-JISのCSVファイルをUTF-8で保存することです(UTF-8で入出力している前提です)。

または、読み取ったCSVファイルの行の文字コードを変換する方法があります。次の例では、配列の文字コードを変換できるmb_convert_variables関数を使ってCSVのデータの文字コードをShift-JISからUTF-8に変換しています。

<?php
$fp = fopen("test.csv", "r");
while (!feof($fp)) {
    $line = fgetcsv($fp);
    mb_convert_variables("UTF-8", "SJIS", $line); 
    echo "名前:$line[0] 出身:$line[1]<br />";
}
?>

表示結果は次のようになります。

文字化けが解消される

文字化けが解消される

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP