我正在使用 PHP 生成一个 CSV 文件并将其保存在硬盘上(我不想下载)。数据库字符集是utf8_general_ci
并且其中有像度数符号 ( °
) 这样的字符,它们在 PHPmyadmin 中完美显示。这些字符需要保存在 CSV 文件中。我所做的一切都是在 UTF-8 中,但文件是用 encoding 保存的ISO-8859-1
。如果我开始使用该函数,当我在 excel 或任何其他文本编辑器中将其转换回时utf8_encode
,其他字符会显示 ( )。我不知道出了什么问题,我花了几个小时来追踪它,但没有成功。Â
UTF-8
我试图SET NAMES utf8
确定它是UTF-8
,但这只会导致更多奇怪的字符并且没有UTF-8
编码。使用 MySQLi 也是set_charset
如此。将标头作为Content-type:text/html;charset=UTF-8
CSV 仍然没有 utf-8 作为默认编码,也没有任何这些组合。
一些代码:
header("Content-type:text/html;charset=UTF-8");
$rMysqli = new mysqli("localhost", "user", "pass", "database");
$rCSV = fopen("test_".time().".csv", 'w');
$aCSVdata = array($var1, $var2, $var3);
fputcsv($rCSV, $aCSVdata, ",", "\"");
fclose($rCSV);
这几乎就是所有正在发生的事情。只是普通的 CSV 数据,只有特殊字符,例如°
和Ø
。