下载CSV, MS EXCEL打开乱码解决方案[转载]

下载CSV, MS EXCEL打开乱码解决方案   

MS的Office Excel打开CSV文件默认是以ANSI, UNICODE格式打开的(对旧版本是这样, 2007好像已经能根据BOM来识别UTF-8了, 但2003还不行)

下面来说如何针对不同的office版本EXCEL都来兼容CSV
思路就是:将你的编码转成UTF-16LE后, 再加一个UNICODE的BOM头”/xFF/xFE”, 最后下载, 这样下载下来的CSV就是UNICODE格式的了
PHP程序例子:

$str4File = iconv(‘UTF-8′, ‘UTF-16LE’, $content); //转码成utf-16的小尾序(http://zh.wikipedia.org/wiki/UTF-16), 这是微软和linux系统使用的UNICODE存储文字格式, 苹果系统使用的是大尾序存储文字格式, 那样就需要用UTF-16BE, 而bom头使用FE FF
$str4Download = gzencode(“/xFF/xFE”.$str4File); //加入bom头, 压缩内容
header(‘Content-type: text/csv; charset=UTF-16LE’);
header( “Content-Length: “.strlen($str4Download) );
header( “Content-Disposition: attachment; filename=/”$filename/”" );
echo $str4Download;

有一点要注意:
就是Unicode编码的.CSV文件可能不支持”,”分割,需要”/t”空格来分割

这是另外一篇介绍 解决CSV乱码的文章, 可参考:http://wangblog.org/2007/12/utf-8unicode.html

介绍: UTF-8, UTF-16与UNICODE的关系
所谓“utf-8”“utf-16”只是UCS Transformation Format,只是UNICODE的一种表现形式, UCS 即是 Unicode Character Set.
更详细的资料, 参考wiki

http://blog.fengruzhuo.com/?p=295

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值