CSVファイルを読み込むPHPスクリプトで実行結果が文字化けする場合、CSVファイルの文字コードを確認してみましょう。
<?php
$fp = fopen("test.csv", "r");
while (!feof($fp)) {
$line = fgetcsv($fp);
echo "名前:$line[0] 出身:$line[1]<br />";
}
?>
西沢直木,千葉県 鈴木一郎,東京都
実行結果は次のように文字化けする場合があります。

読み取ったCSVが文字化け
典型的な原因はExcelから作成したCSVファイルです。Excelで作成した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 />";
}
?>
表示結果は次のようになります。

文字化けが解消される
