PHP头Excel和utf-8

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)
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();

有专家帮忙吗?

PS。该文件保存在DW中,带有title/Encoding Unicode(utf-8)。

提问于
用户回答回答于

我不确定,但是Excel可能无法处理UTF 8(可能取决于版本)。但是它可以处理utf 16,所以尝试转换字符集。这对我来说很管用(超过2002年):

echo mb_convert_encoding('Désçàui','utf-16','utf-8');
用户回答回答于

如果内容是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字节的文件字符集。

扫码关注云+社区