如何使用php

时间:2017-06-12 12:23:23

标签: mysql csv utf-8 character-encoding

通过从mysql表中获取数据,我生成csv文件并上传到某个ftp文件夹。但是使用ftp端的这个csv文件的其他人说它是ANSI编码的。如何将其更改为UTF-8编码?为此,我使用以下代码。

   header('Content-Encoding: utf-8');
   header('Content-Type: text/csv; charset=utf-8');
    $fh1 = fopen($current_csv_name, 'w+');
    foreach($csv_data as $curl_response)
    {
        fputs($fh1, implode($curl_response, ';')."\n");
    }
    fclose($fh1); 

当我下载文件并在记事本中打开并单击“保存”时,因为它始终显示“编码为ASNI”。我做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为您需要在文件开头添加BOM(字节顺序标记),否则,文件系统将始终假定您的字符集默认为ANSI。试着这样做:

header('Content-Encoding: utf-8');
header('Content-Type: text/csv; charset=utf-8');
$fh1 = fopen($current_csv_name, 'w+');

$bom = chr(0xEF) . chr(0xBB) . chr(0xBF);
fputs($fh1, $bom);

foreach($csv_data as $curl_response)
{
    fputs($fh1, implode($curl_response, ';')."\n");
}
fclose($fh1);