由于我们的开发模式一般选择UTF-8编码,所以当存在简体中文,繁体中文,韩日,日文时候,一般页面是不会出现问题的,但是今天做了个项目当导出的CSV的数据存在多国,不同语言的数据时候,数据将会出现乱码。
而以往的案例一般只做一种语言如:
mb_convert_encoding($content,”gb2312″,”UTF-8″),转出来的CSV没任何问题。
但是如果这时候数据中存在一些日文或者韩文,这些数据将会乱码。
经过资料查找,发现其实是CSV格式并不支持UTF-8的编码。但是他支持UTF-16的编码
可用此方法解决CSV中的编码问题
//输出BOM header(‘Cache-control: private’); header(‘Content-Disposition: attachment; filename=test.csv’); header(‘Content-type: text/csv; charset=UTF-16LE’); echo(chr(255).chr(254)); echo(mb_convert_encoding($content,”UTF-16LE”,”UTF-8”));
但是打开Excel还是可能出现一定的问题。
最终的解决方案还是采用开源phpExcel类直接生成Excel。