phpでfgetcsvを使用してcsvファイルを読み込む際に文字化けが発生する問題の解決策
この記事の例では、PHP が fgetcsv を使用して csv ファイルを読み込むときに文字化けが発生する問題の解決策を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
一般的に、php で文字化けが発生するのは、エンコードの問題が原因であることがほとんどです。ここでは、fgetcsv で読み込んだ csv ファイルが文字化けする原因と解決策を分析します。
例は次のとおりです:
コードをコピーします コードは次のとおりです:
function get_csv_contents( $file_target ){
$handle = fopen( $file_target, 'r');
while ($data = fgetcsv($handle, 1000, ",")) {
$num = count($data);
echo "
$row 行目の $num 個のフィールド:
n";
$行++;
for ($c=0; $c
$data[$c] をエコーします。 "
n";;
/*echo getUTFString($data[$c])*/
}
}
fclose($handle);
}
インポートしたcsvファイルはansiエンコーディングで保存されているため、中国語OS環境の場合、対応するエンコーディングはgbkとなるはずですが、ブラウザの文字エンコーディングを手動で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 プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/908175.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/908175.html技術記事 PHP が fgetcsv を使用して csv ファイルを読み込む場合に文字化けが発生する問題の解決方法 この記事では、PHP が fgetcsv を使用して csv ファイルを読み込む場合に文字化けが発生する問題の解決方法について説明します。参考のためにみんなで共有してください。具体的には…