ホームページ > バックエンド開発 > PHPチュートリアル > PHPでファイルをダウンロードする際にBOMヘッダーを自動的に追加する方法とBOMヘッダーの説明と削除方法

PHPでファイルをダウンロードする際にBOMヘッダーを自動的に追加する方法とBOMヘッダーの説明と削除方法

WBOY
リリース: 2016-07-29 09:07:44
オリジナル
1006 人が閲覧しました

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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート