具有UTF8字符的数据时,PHP导出CSV

在MySQL中,我已经将数据字段types设置为utf8_bin并且我将数据存储在Unicode中。 文本正在网页中正确显示。

我想生成excel文件从我的表中导出数据到它。 .xls.cvs的输出是 – '????'。

我在这里检查出其他答案,它被称为使用标题:

header("content-type:application/csv;charset=UTF-8");

类似的问题 。 但它不工作。 在使用标题后,在csv中输出是 – सà¥,àààààààààààààà。

请帮忙。 谢谢。

这个职位解决了我的问题 –

https://stackoverflow.com/a/4762708/2349494

这就是转换 –

打印chr(255)。 chr(254)。 mb_convert_encoding($ csv_output,'UTF-16LE','UTF-8');

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

我有同样的问题,我通过结合两件事情做到了这一点:

首先,您必须将表格整理为UTF8,例如:“utf8_general_ci”(或者只是确保这一点),然后在MySQL查询之后添加以下代码:

 mysql_query("SET NAMES utf8"); 

喜欢

 $result = mysql_query("SHOW COLUMNS FROM table WHERE Field NOT IN ('user_id', 'password')"); mysql_query("SET NAMES utf8"); 

然后,使用这个作为标题(适应您的需要):

 header('Content-Description: File Transfer'); header("Content-type: application/vnd.ms-excel"); header("Content-disposition: csv" . date("Ymd") . ".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; 

我有一个变种Sajal响应,并在php.net上find它: http ://www.php.net/manual/en/function.iconv.php#104287

在csv的内容开始时回声:

 chr(255).chr(254).iconv("UTF-8", "UTF-16LE//IGNORE", $data) 

我更喜欢iconv()但它看起来像mb_convert_encoding() 。 不要忘记更换; 通过标签( \t ),它对我这样很好!

尝试下面的代码;

 ob_end_clean(); $_filename = date('Y_m_d_H_i').".csv"; header("Cache-Control: public"); header("Content-Type: application/octet-stream"); header("Content-Type: text/csv; charset=utf-8"); header("Content-Disposition: attachment; filename=$_filename"); // Read the file from disk readfile($filename); exit(); 

导出为XLS(XML格式)与Unicode支持,只是testing和工作100%

https://code.google.com/p/php-excel/