ホームページ  >  記事  >  バックエンド開発  >  PHPでExcelをダウンロードすると文字化けが発生する場合の対処法

PHPでExcelをダウンロードすると文字化けが発生する場合の対処法

藏色散人
藏色散人オリジナル
2020-08-27 11:05:092594ブラウズ

php ダウンロード Excel の文字化けの解決策: 1. ダウンロード プロセス中にファイル以外の情報の出力をキャンセルします; 2. 出力された Excel 形式とサフィックス名を一貫して保存します; 3. 「ob_clean」メソッドを使用して、バッファをクリアします。

PHPでExcelをダウンロードすると文字化けが発生する場合の対処法

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

コードを記述し、PHP を使用して、私が持っているものをダウンロードします。アップロード Excel が良好な場合にこのエラーが発生します:

強制的に開くと文字化けが表示されます。

検索後、2 つの説明があります:

1. ダウンロード プロセス中に、エコー ログ情報などのファイル以外の情報を出力しないでください。そうしないと、ダウンロードしたファイルを開くことができず、フォーマット エラーが発生するか、ファイルが破損しています。
2. 出力される Excel 形式は、保存されたサフィックス名と一致している必要があります。そうでない場合、形式エラーが表示されるか、ファイルが破損します。

そこで、ダウンロードするためにクリックしたaタグの位置を変更したり、Excelのサフィックス名を確認したりしましたが、効果はありませんでした。

後で調べたところ、文字化けしたファイルを開くとファイルの前に「0xEF 0xBB 0xBF」という3文字が表示されるため、BOMヘッダーに問題がある可能性があることがわかりました。また、PHP は BOM ヘッダーを認識できません。

BOM ヘッダーの説明: utf-8 エンコードされたファイルでは、BOM はファイル ヘッダーにあり、3 バイトを占め、ファイルが utf-8 エンコードに属していることを示すために使用されます。通常、これは隠し文字の文字列であり、多くのソフトウェアは BOM ヘッダーを認識して無視できますが、PHP は認識できません。

したがって、editplus、ultraedit、WINHEX などのソフトウェアを使用して、アップロードする必要があるファイルから BOM ヘッダーを削除してからアップロードできます。ダウンロードした場合は、BOM ヘッダーを削除して、再度開きます。

さらに、コード ob_clean() を readfile と fread に、つまり出力の前に追加して、バッファをクリアすることもできます。

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

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