通过从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”。我做错了什么?任何帮助将不胜感激。
答案 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);