php ダウンロード Excel の文字化けの解決策: 1. ダウンロード プロセス中にファイル以外の情報の出力をキャンセルします; 2. 出力された Excel 形式とサフィックス名を一貫して保存します; 3. 「ob_clean」メソッドを使用して、バッファをクリアします。
推奨: 「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 サイトの他の関連記事を参照してください。