ホームページ  >  記事  >  バックエンド開発  >  PHPでCSVをエクスポートしてエンコードを設定する方法

PHPでCSVをエクスポートしてエンコードを設定する方法

藏色散人
藏色散人オリジナル
2021-09-17 10:00:271930ブラウズ

php で CSV をエクスポートするときにエンコードを設定する方法: 1. iconv メソッドを使用して、エクスポートされたコンテンツを utf-8 から gb2312 にトランスコードします; 2. mb_convert_encoding メソッドを使用してエンコードを変換します。

PHPでCSVをエクスポートしてエンコードを設定する方法

この記事の動作環境: Windows7 システム、PHP7.1 バージョン、Dell G3 コンピューター

php はどのように csv をエクスポートしますかエンコーディングを設定しますか? PHPで文字化けしたコードをCSVでエクスポートしますか?

以前は一部のデータのエクスポートに PHPexcel を使用していましたが、10,000 個を超えるデータをエクスポートするとタイムアウトとメモリ爆発が発生するため、その後、データを CSV 形式でエクスポートすることに切り替えました。

PHP を使用して CSV ファイルをエクスポートするときに、さまざまな文字化けの問題に遭遇した友人も多いと思います。インターネットでよく検索しましたが、すべて BOM を追加することで解決策が見つかりました。この方法を何度も試しましたが、テスト環境や運用環境では機能しませんでした。理由はわかりません。

その後、エクスポートしたコンテンツを iconv メソッドを使用して utf-8 から gb2312 にトランスコードしました。奇跡的に、最終的には正常に表示されるようになりました。しかし、同僚は、いくつかの欠落部分があることを発見しました。エクスポートした400個以上のデータのうち、10個のデータ(各部分を1つずつトランスコードしてcsv文字列につなぎました)。そこで、iconv のトランスコードが失敗する問題を調べるために Du Niang に行ったところ、iconv にはバグがあることが判明しました。一部の漢字は変換できませんでした。変換できなかった場合はスキップできず、null が返されました。値。これが数十個のデータが欠落した理由でした。また、mb_convert_encoding を使用して変換する方法も提供します。そこで、少し修正を加え、mb_convert_encoding メソッドを使用するように変更しました。ローカル マシンでのテストは非常に正常でした。コードは次のとおりです。

$str = mb_convert_encoding($str,'gb2312');

しかし、データがオンラインでエクスポートされるとき、データはまだ文字化けが多発していますが、トランスコードなしの場合とは異なり、文字化けは依然として異なり、mb_convert_encoding メソッドが機能していることがわかります。 mb_convert_encoding メソッドには 3 つのパラメータ $from_encoding があることを確認しました。3 番目のパラメータはオプションのパラメータです。インターネット上のほとんどの例では 3 番目のパラメータが使用されていません。3 番目のパラメータもデフォルトでは null です。そこで、これを

$str = mb_convert_encoding($str,'gb2312','utf-8');

に変更して、ローカルの開発マシンでテストしました。正常でした。本番環境に公開すると、ははは、すべて正常でした。

これはなぜですか?詳しく調べる時間がありません。知っている人がいたら教えてください。

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

以上がPHPでCSVをエクスポートしてエンコードを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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