PHP CSV编码不是utf-8

Dee*_*zen 1 php csv utf-8 iso-8859-1 character-encoding

我正在使用PHP生成CSV文件并将其保存在硬盘上(我不想下载).数据库字符集就是utf8_general_ci那里的字符,就像°degree sign()一样,在PHPmyadmin中完美显示.这些字符需要保存在CSV文件中.我所做的一切都是UTF-8,但文件会随编码一起保存ISO-8859-1.如果我开始使用该utf8_encode函数,Â当我将其转换回UTF-8excel或任何其他文本编辑器时,其他字符显示up().我不知道出了什么问题,我花了好几个小时跟踪它,没有成功.

我试过SET NAMES utf8确定它是UTF-8,但这只会导致更奇怪的字符和没有UTF-8编码.使用MySQLi也是set_charset如此.使用标题作为Content-type:text/html;charset=UTF-8CSV仍然没有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);
Run Code Online (Sandbox Code Playgroud)

这几乎都在发生.只是普通的CSV数据,只有特殊的字符,如°Ø.

dec*_*eze 7

......评论的长篇故事简短......

在编码时,Microsoft Office是最糟糕的.它出了名的很糟糕.

(即除了Excel,一切都很好.)