使用php以UTF-8格式导出为CSV for Excel

ugmeyewa  于 12个月前  发布在  PHP
关注(0)|答案(3)|浏览(101)
Below are my code used to generate csv file. 
My problem is UTF-8 characters  are not coming correctly.
even I tried iconv also, but  no result.

PHP CODE
-----------------

$con = mysql_connect('localhost','root','');$db_selected = mysql_select_db('test',$con); mysql_query(“SET NAMES utf8”);$qry_res = mysql_query(“SELECT * FROM table 2“);

$filename = "test.csv";
$fp = fopen('php://output', 'w');
//$header = array('id','name');
$header = array("Id","Name");
header('Content-type: application/csv;charset=utf-8');
header('Content-Disposition: attachment; filename='.$filename);
fputcsv($fp, $header);

while($data = mysql_fetch_row($qry_res)){
  fputcsv($fp, $data);
}

 exit;
------------------------------------------
Table value:
-----------------------
Id  Name
2   traducción de idiomas
3   תרגום שפות
4   language translation
7   Tłumaczenie na język

Result:
Id  Name
2   traducción de idiomas
3   ????? ????
4   language translation 
7   T?umaczenie na j?zyk

Thanks in advance.
ev7lccsx

ev7lccsx1#

尝试在标题后添加以下内容:

echo "\xEF\xBB\xBF";  // BOM header UTF-8
7kjnsjlb

7kjnsjlb2#

如果您的原始数据是UTF-8,将数据导出为CSV / Excel可读的最佳方法是转换数据。

$chain1 = iconv("UTF-8", "ISO-8859-15", 'érase camión del niño'); 
$chain2 = iconv("UTF-8", "cp1252", 'érase camión del niño'); 
echo $chain1.$chain2;

这对我很有效。

lztngnrs

lztngnrs3#

假设数据库中的数据是UTF,那么您需要修改生成文档的方式。
在我的代码中,我使用iconv将一个裸echo替换为一个修改后的echo:

// echo $csv;

echo iconv("UTF-8", "ISO-8859-2", $csv);

Excel采用ISO。需要一个显式的指令将其转储为UTF。每次都很管用。

相关问题