编写CSV文件 - 编码问题

时间:2014-08-08 02:04:00

标签: php excel csv encoding utf-8

我在PHP中有一个CSV字符串,由mb_detect_encoding检测为UTF8。此字符串将写入文件。当我在文本编辑器(Programmers Notepad)中打开它时,编辑器说它是UTF8 No Mark,当我将编码更改为ANSI时,它在Excel中正确打开。 我想用ANSI编写该文件,以便在我在Excel中打开它之前不必在文本编辑器中将其转换。试图使用以下内容:

  • utf8_decode($ XHTML)
  • iconv(“UTF-8”,“Windows-1252”,$ xhtml)
  • iconv(“UTF-8”,“ISO-8859-1”,$ xhtml)
  • mb_convert_encoding($ xhtml,“ISO-8859-1”,“UTF-8”)

使用utf8_decode,特殊字符显示为问号。 iconv和mb_convert_encoding在第一个特殊字符处剪切了strin。有关如何将此字符串转换为在Excel中打开的文件的任何想法吗?

1 个答案:

答案 0 :(得分:0)

所以你可能导出了你的可爱数据库,完全以UTF-8编码存储,然后你在Excel中打开csv,看到一堆看起来很疯狂的角色,ä,Õ和é应该是什么?

嗯,这是一个修复:在文件中添加字节顺序标记。 Excel急需它......

function customer_download($file) {
    header('Content-Type: application/force-download');
    header('Content-Description: File Transfer');
    header('Content-disposition: attachment; filename="'.$file.'"');
    @include_once('file_get_contents.php');
    $csv = @file_get_content($file);
    die(chr(0xEF).chr(0xBB).chr(0xBF).$csv);
}