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 />";
}
?>

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

文字化けが解消される

文字化けが解消される

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク