ホームページ  >  記事  >  バックエンド開発  >  PHPでCSV文字化けが発生した場合の対処法

PHPでCSV文字化けが発生した場合の対処法

藏色散人
藏色散人オリジナル
2021-05-18 09:42:212907ブラウズ

php は、出力される CSV 形式ファイルに BOM がないため、CSV 文字化けを生成します。解決策は、BOM を使用して文字エンコーディングを示し、「header("Content-type:text」のようなコードを使用することです。 /csv;charset=gb2312"); "。

PHPでCSV文字化けが発生した場合の対処法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 パソコン

中国語文字化けの解決方法PHP 出力 csv ファイル内の中国語コード

PHP ダウンロード ファイルでは、バイト ストリーム出力がよく使用されます。したがって、CSV 形式をダウンロードするためによく使用されるコードは次のとおりです。

header("Content-Type: application/force-download"); 
header("Content-type:text/csv;charset=gb2312"); 
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv"); 
echo "收件人邮箱,收件人姓名,发送时间\r";
 ob_end_flush();
 foreach($list as $rs) { 
echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush();
 }
 exit;

この方法でダウンロードした CSV ファイルをメモ帳やサブライム テキストなどのエディタで開くと通常は文字化けします。 Excel で開いた場合、出力される CSV 形式のファイルは BOM が存在しないため、BOM についてはさまざまな意見があります。通常、PHP では BOM を削除する必要がありますが、CSV ファイルには BOM マーキング文字エンコーディングを使用する必要があります。

解決策は次のとおりです:

header("Content-Type: application/force-download");
header("Content-type:text/csv;charset=gb2312");
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv");
echo chr(0xEF).chr(0xBB).chr(0xBF);
echo "收件人邮箱,收件人姓名,发送时间\r";
ob_end_flush();
foreach($list as $rs)
{
   echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r";
   flush();
}
exit;

Linux と Windows の改行の違いのため。上記のコードが Linux サーバーで悪い反応を示す場合は、「\r」を「\r\n」に変更できます。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPでCSV文字化けが発生した場合の対処法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。