php header excel 和 utf-8解决方案对我有用

2022-08-30 17:59:30
ob_start();

echo 'Désçàui';

header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-type:   application/x-msexcel; charset=utf-8");
header("Content-Disposition: attachment; filename=Test.xls"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); 

ob_end_flush();

我在excel文件中得到的是Désçàui

但是,当我尝试时,我确实会得到Désçàui

ob_start();
echo 'Désçàui';
header("Content-Type:   text/html; charset=utf-8");
ob_end_flush();

任何帮助专家?

该文件保存在DW中,标题/编码Unicode(Utf-8)。


答案 1

http://www.mwasif.com/2007/5/download-data-csv-using-php/

解决方案对我有用

丹麦人扎胡尔说:

十月 7, 2009 @ 7:23 下午

如果您的内容是UTF-8格式,则无需转换编码。只需在标头后使用 UTF-8 BOM 启动文件/输出流即可。

echo pack("CCC",0xef,0xbb,0xbf);

标头应包含编码 UTF-8

header( "Content-type: application/vnd.ms-excel; charset=UTF-8" );

它将像 charm 一样工作,因为 Excel 将使用 BOM 字节识别文件字符集。


答案 2

我不确定,但可能是excel无法处理utf8(可能取决于版本)。但它可以处理utf16,所以尝试转换字符集。这对我有用(在excel2002中):

echo mb_convert_encoding('Désçàui','utf-16','utf-8');

推荐