PHP はファイルをダウンロードするときに BOM ヘッダーを自動的に追加します。まず、BOM ヘッダーとは何かを理解する必要があります。 Windows でメモ帳などのプログラムを使用してテキスト ファイルを UTF-8 形式で保存すると、メモ帳はファイル ヘッダーの前にいくつかの非表示文字 (EF BB BF) を追加します。これはいわゆる BOM (バイト オーダー) です。マーク)。 )。
utf-8 でエンコードされたファイルでは、BOM はファイルのヘッダーにあり、3 バイトを占め、ファイルが utf-8 エンコードに属していることを示すために使用されます。BOM ヘッダーを認識するソフトウェアは数多くありますが、 PHP が BOM ヘッダーを認識できないなど、BOM ヘッダーを認識できないものもまだあります。そのため、メモ帳で UTF-8 エンコードを編集するとエラーが発生します。
ファイルの冒頭にいくつかの非表示文字EF BB BFが含まれている限り、メモ帳に保存されたファイルに限定されません(16進数はxEFxBBxBFである必要があり、バイナリでファイルを編集するときに表示されます)。これは慣例のようなもので、システムはこれを認識すると、ファイルが UTF-8 でエンコードされていると認識します。
インターフェースが UTF-8 の場合、デフォルトで csv.excel などのファイルを強制的にダウンロードする必要があります (中国語の背景)。csv は GB でエンコードされていると見なされるため、BOM ヘッダーがある場合は、ユーザーが提示したファイルが文字化けしている可能性があります。
BOMを追加するには?
ファイルを出力する前に BOM ヘッダーを追加するだけです:
コードは次のとおりです:
// 文件名 $filename = "www.jb51.net .csv"; header('Expires: ' . gmdate('D, d M Y H:i:s', $_SERVER['REQUEST_TIME'] + 10) . ' GMT'); header('Cache-Control: max-age=10'); //header('Content-Type: application/vnd.ms-excel; charset=utf-8'); header('Content-Type: text/csv; charset=utf-8'); header("Content-Disposition: attachment; filename={$filename}"); // 如果结果中有提示信息,则把第一行输出改为提示信息文字 $out = "xEFxBBxBF";// 加上bom头,系统自动默认为UTF-8编码 if (!empty($extra['notice'])) { $out .= "{$extra['notice']}rn"; } // 输出 foreach ($table as $row) { $out .= implode(",", $row) . "rn"; } /* if (mb_detect_encoding()($out) == 'UTF-8') { $out = iconv("UTF-8//IGNORE", "GBK", $out); } */ echo $out;
次のコンテンツでは、BOM ヘッダーの説明と削除方法を紹介します
BOMヘッダーを削除する方法は以下の2種類です:
1. editplusでBOMヘッダーを削除する方法
エディターをUTF8エンコード形式に調整すると、隠し文字の文字列(つまりBOM)が表示されます。 ) 編集者を識別するために、保存されたファイルの前にこのファイルが UTF8 でエンコードされているかどうかを示します。
Editplus を実行し、[ツール] をクリックして、[環境設定] を選択し、ファイルを選択して、UTF-8 識別子を選択します。必ず署名を削除してから、PHP ファイルを編集して保存します。PHP ファイルには BOM がありません。
2. Ultraedit で BOM ヘッダーを削除する方法
ファイルを開いた後、名前を付けて保存オプションでエンコード形式 (BOM ヘッダーなしの utf-8) を選択し、確認すれば OK です
どうでしょうか? BOMヘッダーを削除するのは非常に簡単です
utf8のBOM情報についてもう一度話しましょう
BOMとは、BOM付きのPHPファイル自体の保存方法を指しますが、通常のページの中国語文字化けの方法はありません。この理由によって引き起こされます。
header("Content-type: text/html; charset=utf-8");
この文は、HTML 出力ページのエンコード方法を制御します。BOM は、WINDOWS で「メモ帳」を使用して UTF-8 として保存する場合にのみ使用できます。WINHEX を使用して最初の 2 バイトを削除できます。 。
Dreamweaverのエンコード設定では、BOMを含めるかどうかを設定できます。 通常、phpの出力が画像(GDIストリーム)でない限り、BOMは問題になりません。
GDI ストリームの先頭に余分な文字がある場合、赤十字で表示されます。
上記のコンテンツは、ファイルをダウンロードするときに PHP が BOM ヘッダーを自動的に追加する方法と、BOM ヘッダーを削除する方法を説明しています。気に入っていただければ幸いです。
上記では、PHP でファイルをダウンロードするときに BOM ヘッダーを自動的に追加する方法と、BOM ヘッダーを説明および削除する方法を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。