まず、bomとは何かを理解しましょう。 Windows でメモ帳などのプログラムを使用してテキスト ファイルを UTF-8 形式で保存すると、メモ帳はファイル ヘッダーの前にいくつかの非表示文字 (EF BB BF) を追加します。これはいわゆる BOM (バイト オーダー) です。マーク)。 )。
ファイルの冒頭にいくつかの非表示文字EF BB BFが含まれている限り、メモ帳に保存されたファイルに限定されません(16進数はxEFxBBxBFである必要があり、バイナリでファイルを編集するときに表示されます)。これは慣例のようなもので、システムはこれを認識すると、ファイルが UTF-8 でエンコードされていると認識します。
インターフェースが UTF-8 の場合、デフォルトで csv.excel などのファイルを強制的にダウンロードする必要があります (中国語の背景)。csv は GB でエンコードされていると見なされるため、BOM ヘッダーがある場合は、それを次のユーザーに提示できます。ユーザー ファイルが文字化けしている可能性があります。
BOM を追加するには?
出力ファイルの前に BOM ヘッダーを追加するだけです:
コードをコピーします コードは次のとおりです:
('有効期限: ' .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}");
// If結果にプロンプト メッセージがある場合は、出力の最初の行をプロンプト メッセージ テキストに変更します
$out = "xEFxBBxBF" // Bom ヘッダーを追加します。システムは自動的にデフォルトで UTF-8 エンコーディングを使用します
if (!empty($; extra['notice'])) {
$out .= "{$extra['notice']}rn";
}
/ / Output
foreach ($table as $row) {
$out .= implode (",", $row) . "rn";
}
/* if (mb_detect_encoding()($out) == 'UTF -8') {
$out = iconv("UTF-8//IGNORE) ", "GBK", $out);
} */
echo $out;
http://www.bkjia.com/PHPjc/684745.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/684745.html技術記事まず、bomとは何かを理解しましょう。 Windows でメモ帳などのプログラムを使用してテキスト ファイルを UTF-8 形式で保存すると、メモ帳はファイル ヘッダーの前にいくつかの非表示文字 (...) を追加します。