ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP Tutorial でエクスポートした CSV で中国語が文字化けする問題を解決する

PHP_PHP Tutorial でエクスポートした CSV で中国語が文字化けする問題を解決する

WBOY
WBOYオリジナル
2016-07-13 09:52:161524ブラウズ

PHPでエクスポートしたCSVの中国語文字化け問題を解決

CSVファイルをExcelで開いていくつかの操作を実行できると同時に、PHPを使用してCSVファイルをインポートすることも非常に簡単です。そのため、通常はphpを使用してcsvをエクスポートしますが、Excelでcsvを開くと文字化けが発生することがあります。以下の解決策を見てみましょう。

文字化け

普通に出力できるCSVファイルをエクスポートするコードを書きました

ファイルを開くにはCSVやTXTプログラムを使うのが一般的ですが、Excelでファイルを開くと中国語の文字化けの問題が発生します(これはおかしい、なぜExcelで文字化けが起こるのでしょうか?)

エンコードを確認すると、エクスポートされたCSVファイルはUTF-8 BOMフリーエンコード形式であることがわかり、通常はBOM付きのUTF-8エンコード形式を使用しています。

BOMを追加してみたところ、中国語の文字化け問題は解決しました。

CSVファイルにBOMを追加します

サンプルコード:

$file = fopen($export_file_path, 'w');

fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF)); // BOMを追加します

foreach ($contens as $content) {

fputcsv($file, $content);

}

fclose($file);

別の解決策

関数 down_file($filepath,$filename)

{

if(!file_exists($filepath))

{

echo "バックアップ エラー、ダウンロード ファイルが存在しません";

exit();

}

ob_end_clean();

header('Content-Type: application/download');

header("Content-type: text/csv");

header('Content-Disposition:attachment;filename="'.$filename.'"');

header("Content-Encoding: binary");

header("Content-Length:".filesize($filepath));

header("Pragma: no-cache");

header("有効期限: 0");

readfile($filepath);

$e=ob_get_contents();

ob_end_clean();

}

$fname='usersdata.csv';

$handle=fopen($fname,'wb');

$strUsersData =iconv('utf-8','gb2312',$strUsersData);//エンコーディングを変換します

if(fwrite($handle,$strUsersData)==false){}

fclose($handle);

down_file($fname,'555.csv');

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1010442.html技術記事 PHP でエクスポートした CSV の中国語文字化けの問題を解決します。CSV ファイルは Excel で開くことができ、いくつかの操作を実行できます。同時に、CSV ファイルを PHP でインポートするのは非常に簡単なので、通常は を使用します。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。