php fgetcsv は、インポートされた csv ファイルが ansi エンコーディングで保存されているために文字化けします。解決するには、中国語のオペレーティング システム環境に対応するエンコーディングを「gbk」に設定する、つまりブラウザの文字エンコーディングを手動で変更します。 「gbk」で十分です。
おすすめ:「PHPチュートリアル」
csvファイル読み込み時の文字化け問題の解決策php で fgetcsv を使用する方法
一般的に PHP で文字化けが発生する原因はエンコードの問題がほとんどですが、ここでは fgetcsv で csv ファイルを読み込む際に文字化けが発生する原因と解決策を分析します。
例は次のとおりです:
コードは次のとおりです:
function get_csv_contents( $file_target ){ $handle = fopen( $file_target, 'r'); while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); echo "<p> $num fields in line $row: <br>n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c]. "<br>n";; /*echo getUTFString($data[$c])*/ } } fclose($handle); }
インポートされた CSV ファイルは ANSI エンコーディングで保存されます。中国語のオペレーティング システム環境の場合、対応するパス ブラウザの文字エンコードを手動でgbkに変更したところ、文字化けが解消され、以下の調整が行われました。
コードは次のとおりです。
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
$data は、エンコードに変換する必要がある配列です。
補足: LINUX FGETCSV が GBK データを読み込むと文字化けする
Linux システムがデフォルト設定を使用している場合、Linux サーバー上で gbk csv 形式のファイルを処理するときに文字化けが表示されます。
解決策は次のとおりです:
setlocale 関数を使用して環境変数を設定します。たとえば、gb を使用して地域設定を設定するには、fgetcsv の前に次のステートメントを使用できます。
コードは次のとおりです:
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
どのロケールが具体的に使用されていますか? Linux コマンド locale -a を使用して、システムがどの
をサポートしているかを確認できます。以上がphp fgetcsvの文字化け問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。