php header excel和utf-8

Jer*_*Roy 20 php utf-8

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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

有帮助专家吗?

PS.该文件以标题/编码Unicode(Utf-8)保存在DW中.

小智 20

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

解决方案对我有用

丹麦人Zahur说,

2009年10月7日@ 7:23 pm

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

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

标头应包含UTF-8编码

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

它将像魅力一样工作,因为Excel将识别具有BOM字节的文件字符集.


小智 20

我不知道你是如何生成excel文件的.但是,如果您是从HTML输出中执行此操作,则可以在开头添加以下内容:

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />

问候


Dr.*_*lle 18

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

echo mb_convert_encoding('Désçàui','utf-16','utf-8');
Run Code Online (Sandbox Code Playgroud)


Mla*_*vic 9

这个UTF-8 BOM代码行使我的UTF-8字符工作正常:

 header("Content-type: application/vnd.ms-excel");
 header("Content-Disposition: attachment; filename='".$file_name."'");
 header("Pragma: no-cache");
 header("Expires: 0");
 echo "\xEF\xBB\xBF"; //UTF-8 BOM
 echo $out;
Run Code Online (Sandbox Code Playgroud)