Home  >  Article  >  Backend Development  >  How to automatically add BOM header when downloading files with PHP and explain the method of BOM header and remove BOM header, _PHP tutorial

How to automatically add BOM header when downloading files with PHP and explain the method of BOM header and remove BOM header, _PHP tutorial

WBOY
WBOYOriginal
2016-07-12 09:01:261139browse

How does PHP automatically add BOM headers when downloading files and explains the BOM header and how to remove BOM headers? What is a bom? When you use a program such as Notepad to save a text file in UTF-8 format under Windows, Notepad will add a few invisible characters (EF BB BF) in front of the file header, which is the so-called BOM (Byte order Mark). ).

In a UTF-8 encoded file, the BOM is in the header of the file, occupying three bytes, which is used to indicate that the file belongs to UTF-8 encoding. There are many softwares that recognize the BOM header, but there are still some that cannot recognize the BOM header. For example, PHP cannot recognize the BOM header, which is why an error occurs after editing UTF-8 encoding with Notepad.

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; 
The following content will introduce and explain the BOM header and how to remove it

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");

In the encoding settings in Dreamweaver, you can set whether to include BOM. Generally, as long as the output of PHP is not a picture (GDI Stream), BOM will not cause problems.

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:

php UTF-8, Unicode and BOM issues

    Check whether the php file contains BOM functions
  • PHP Examples of methods to automatically add BOM headers when downloading files
  • Code examples of PHP batch deletion and clearing UTF-8 file BOM headers
  • Code examples of PHP batch detection and removal of file BOM headers
  • Encountering BOM and b1fcc30dc620884d34c0f0ef6171d0f8 encoding in PHP, causing the json_decode function to be unable to parse the problem
  • Invisible character 65279 (BOM header of utf-8) problem in PHP
  • PHP implements UTF-8 File BOM automatic detection and removal examples
http://www.bkjia.com/PHPjc/1088793.html

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1088793.htmlTechArticlePHP How to automatically add BOM header when downloading files and explain the method of BOM header and remove BOM header, PHP when downloading files To automatically add bom headers, you first need to figure out what is bom headers? In Win...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn