My page is encoded in UTF-8. What should I do to ensure that the exported excel will not be garbled? And because different operating systems have different system encodings, do they have to provide files in different encoding formats for download?
1. Define file name
2. Fill in Excel data
There may be some garbled problems when exporting Excel from PHP during these two processes. Let me talk about the solution below:
Solve the garbled Excel exported by PHP of data in Excel:
The reason why PHP exports Excel with garbled characters: The web page encoding is inconsistent with the Excel encoding.
Solution: Since the encoding is inconsistent, it will be OK to make it consistent. Define Excel’s character set:
代码如下 |
复制代码 |
header(“Content-Type: application/vnd.ms-excel; charset=UTF-8″) |
, you see charset=UTF-8, make it consistent with your web page encoding to solve the problem of garbled data in Excel, this is relatively simple!
Attached is a php export Excel class
The code is as follows |
Copy code |
代码如下 |
复制代码 |
/*
* Created on 2012-2-26
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=php100.xls");
?>
|
/*
* Created on 2012-2-26
*
* To change the template for this generated file go to
代码如下 |
复制代码 |
iconv("UTF-8", "GBK", $value);
|
* Window - Preferences - PHPeclipse - PHP - Code Templates<🎜>
*/<🎜>
header("Content-type:application/vnd.ms-excel");<🎜>
header("Content-Disposition:filename=php100.xls");<🎜>
?>
|
Summary
Need to convert to GBK before exporting
The code is as follows |
Copy code |
iconv("UTF-8", "GBK", $value);
|
Other methods
Finally, I adopted the method of phpMyAdmin. I used HTMLExcel. We are familiar with HTML and the format is as follows.
The code is as follows |
Copy code |
代码如下 |
复制代码 |
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
1234 | Robbin会吐口水 |
5678 | javaeye网站 |
|
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
代码如下 |
复制代码 |
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=export_data.xls"); |
1234 | Robbin can spit |
5678 | javaeye website |
代码如下 |
复制代码 |
header(“Content-Disposition: inline; filename=”" . $filename . “.xls”") |
|
Now you can echo directly without iconv transcoding. Just set the Content-type in HTML (UTF-8 is used here). Doesn’t it feel comfortable? Of course, the header still needs to be added.
Php code
The code is as follows |
Copy code |
header("Content-type:application/vnd .ms-excel");
代码如下 |
复制代码 |
iconv(‘utf-8″, “gb2312″, $filename) |
header("Content-Disposition:attachment;filename=export_data.xls"); |
If you export Chinese names, garbled characters may appear
Solution to the garbled file name exported to Excel by PHP:
Cause of garbled code: The Chinese version of Windows system platform used by the customer, and the file name encoding of the Windows platform is gb2312 (gbk), and in order to follow the existing trend, our web page encoding generally uses utf-8 (internationalization) encoding. This When we:
will appear garbled characters. If your web page encoding is gb2312, then there is no need to consider encoding issues.
Solution:
To transcode $filename, execute:
. If your environment does not support the iconv function, you can use another function, as long as the encoding of $filename can be converted to gbk.
But this problem will arise again, and Linux users will have garbled file names (because the Linux platform file names are not gbk encoded).
Considering this problem, I adopted two methods: First: give up some customers, after all, Windows system users account for the majority. Second: Like gmail, two download addresses are provided. One file name is gbk encoded, and one file name is utf-8 encoded.
http://www.bkjia.com/PHPjc/632176.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/632176.htmlTechArticleMy page is encoded in UTF-8. What can I do to ensure that the exported excel will not be garbled? And because different operating systems have different system codes, they must provide different...