通过PHP导出utf-8字符的CSV

通过PHP导出utf-8字符的CSV,php,excel,csv,header,Php,Excel,Csv,Header,我需要用php导出一个.csv文件。我使用以下代码来实现这一点: header('Content-Encoding: UTF-8'); header('Content-type: application/csv; charset=UTF-8'); header("Content-Disposition: attachment; filename=$fn"); echo "\xEF\xBB\xBF"; // UTF-8 BOM print($csv); $csv包含一些波斯语字符。当我用ms

我需要用php导出一个.csv文件。我使用以下代码来实现这一点:

header('Content-Encoding: UTF-8');
header('Content-type: application/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=$fn");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
print($csv); 
$csv
包含一些波斯语字符。当我用ms excel打开导出的文件时,显示了错误的字符。当我打开文件时,记事本上的字符显示在右边。 我如何解决这个问题?

以下是我是如何解决的

header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
header('Content-Transfer-Encoding: binary');
echo "\xEF\xBB\xBF";

之前我得到的是垃圾字符,现在正确的数据被导出。

您的原始内容是utf8吗?如果在$csv上使用utf8_编码,有帮助吗?原始内容是utf8格式的。但我并没有在php文件中使用任何标记来定义它,比如[]您可能想要测试它。我过去在这方面遇到过问题。在任何时候,它都应该是utf8格式的(即,从您的数据库加载它)。读到这一点似乎也可能是csv文件固有的问题;有人建议将.txt另存为.txt,并在excel中以csv形式打开.txt,因为.txt支持utf8,而只有csv的AscieXcel在导入“怪异”(大引号)编码方面是出了名的糟糕。尝试它的文件>导入功能,而不是常规的双击