为了账号安全,请及时绑定邮箱和手机立即绑定

如何在PHP中输出Excel将正确读取的UTF-8 CSV?

如何在PHP中输出Excel将正确读取的UTF-8 CSV?

PHP
慕妹3242003 2019-06-28 09:58:27
如何在PHP中输出Excel将正确读取的UTF-8 CSV?我有一个非常简单的东西,它只是输出一些CSV格式的东西,但是它必须是UTF-8。我在TextEdit、TextMate或Dreamweaver中打开这个文件,它正确地显示UTF-8字符,但是如果我在Excel中打开它,它就会做这种傻事。以下是我在文件中的主要内容:header("content-type:application/csv;charset=UTF-8");header("Content-Disposition:attachment;filename=\"CHS.csv\"");除了Excel(Mac,2008)不想正确导入它之外,这一切似乎都具有预期的效果。Excel中没有选项可以让我“打开UTF-8”或任何东西,所以…我有点生气。我似乎在任何地方都找不到任何明确的解决办法,尽管很多人都有同样的问题。我看到的最重要的是包括BOM,但我不知道如何做到这一点。如你所见,我只是echo用这些数据,我不会写任何文件。我可以这样做,如果我需要,我只是不是因为似乎没有必要在这一点上。有什么帮助吗?更新:我尝试将BOM作为echo pack("CCC", 0xef, 0xbb, 0xbf);我刚刚从一个试图探测到BOM的网站上找到的。但是Excel只是在导入第一个单元格时将这三个字符附加到第一个单元格中,并且仍然会混淆特殊字符。
查看完整描述

3 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我也有同样的(或类似的)问题。

在我的例子中,如果我向输出添加了一个BOM,它可以工作:

header('Content-Encoding: UTF-8');header('Content-type: text/csv; charset=UTF-8');header('Content-Disposition: attachment; filename=Customers_Export.csv');echo "\xEF\xBB\xBF"; // UTF-8 BOM

我相信这是一个相当丑陋的黑客,但它对我有效,至少对Excel 2007 Windows。不确定它会在Mac上起作用。


查看完整回答
反对 回复 2019-06-28
?
冉冉说

TA贡献1877条经验 获得超1个赞

下面是我是如何做到的(即提示浏览器下载CSV文件):

header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');header('Content-Disposition: attachment; filename=file.csv');header('Content-Transfer-Encoding: binary');header('Expires: 0');header('Cache-Control: must-revalidate, post-check=0, pre-check=0');header('Pragma: public');echo "\xEF\xBB\xBF"; // UTF-8 BOMecho $csv_file_content;exit();

当你点击Mac上的空格键时,它唯一解决的是CSV预览中的UTF 8编码问题。但在Excel Mac 2008中.不知道为什么


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 781 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号