Not limited to files saved in Notepad, as long as the opening of the file contains several invisible characters EF BB BF (hexadecimal should be xEFxBBxBF, visible when editing the file in binary). This is like a convention. When the system sees this thing, it will think that your file is UTF-8 encoded.
If your interface is UTF-8, you need to force download a file, such as csv.excel by default (Chinese background), considers csv to be GB encoded, so if there is a BOM header, then you can The file presented by the user may be garbled.
How to add bom?
Just add the bom header before the output file:
The code is as follows:
// 文件名 $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;
There are two simple ways to remove bom:
1. How to remove BOM header with editplus
After the editor is adjusted to UTF8 encoding format, there will be a string of hidden characters (that is, BOM) in front of the saved file, which is used by the editor to identify whether the file is UTF8 encoded.
Run Editplus, click Tools, select Preferences, select the file, select UTF-8 identification, always delete the signature, and then edit and save the PHP file without BOM.
2. Ultraedit method to remove BOM
After opening the file, select the encoding format in the save as option (utf-8 without BOM header), and confirm it.
How about it? It’s easy to remove the bom
Another paragraph discussing the BOM information of utf8
BOM means that the storage method of the PHP file itself is UTF-8 with BOM. The Chinese garbled way of ordinary pages is generally not caused by this reason.
This sentence controls the encoding method of the html output page. The BOM is only available when "Notepad" is used to store it as UTF-8 under WINDOWS. You can use WINHEX to delete the first 2 bytes.
header("Content-type: text/html; charset=utf-8");
GDI Stream will be displayed as a red cross if there are extra characters at the beginning.
The above content introduces how PHP automatically adds BOM headers when downloading files and explains how to remove BOM headers. I hope you like it.
Articles you may be interested in: