Saj*_*jal 19
这篇文章解决了我的问题:https://stackoverflow.com/a/4762708/2349494
这就是转换的原因:
print chr(255) . chr(254) . mb_convert_encoding($csv_output, 'UTF-16LE', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
早些时候,我正在获取垃圾字符,现在输出正确的数据.
小智 12
我有同样的问题,我通过结合两件事做到了:
首先,您必须将表格排序更改为UTF8,例如:"utf8_general_ci"(或只是确保这一点),然后在MySQL查询后添加此代码:
mysql_query("SET NAMES utf8");
Run Code Online (Sandbox Code Playgroud)
喜欢
$result = mysql_query("SHOW COLUMNS FROM table WHERE Field NOT IN ('user_id', 'password')");
mysql_query("SET NAMES utf8");
Run Code Online (Sandbox Code Playgroud)
然后,将其用作标题(根据您的需要进行调整):
header('Content-Description: File Transfer');
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
header('Content-Transfer-Encoding: binary');
header('Pragma: public');
print "\xEF\xBB\xBF"; // UTF-8 BOM
print $csv_output;
exit;
Run Code Online (Sandbox Code Playgroud)
小智 5
我有一个Sajal响应的变种,并在php.net上找到它:http://www.php.net/manual/en/function.iconv.php#104287
在csv内容的开头回应这个:
chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $data)
Run Code Online (Sandbox Code Playgroud)
我更喜欢,iconv()但它似乎也一样mb_convert_encoding().不要忘记;用tabs(\t)替换它,这对我来说很好!