linux下通过php生成的csv文件在window中打开乱码解决方法

在Linux环境中,通过PHP生成的CSV文件在Windows下打开显示乱码。问题可能在于编码格式不一致,Linux生成的是UTF8,而Windows默认使用GBK。解决方案是在PHP代码中使用iconv将UTF8转换为GB2312,然后在Windows中用Excel打开即可正常显示。

【背景】今天要做一个数据导出的小需求,通过php将数据库中的数据查询出来,写入到csv(Comma-Separated Values)中。由于程序运行在linux环境上,通过sercureCRT将文件下载到window,打开后中文全部乱码,下面讲述如何定位问题并解决问题的。

【分析】

1. 将linux上生成的resutl.csv文件下载到window,打开乱码。通过记事本打开有内容不乱码,将内容复制到另外一个记事本中,修改为csv格式打开不乱码。因此极有可能是linux生成的文件和window下新建文件的编码格式不一致。

2. 记原始linux生成的csv文件为result_bad.csv,记在window下新建文件并通过粘贴内容形成的文件为result_good.csv,将两个文件上传到linux环境,通过命令:xxd result_bad.csv,   xxd result_good.csv,比较两个的内容,会发现在出现中文的地方两者不一致:

举例:

对result_bad.csv文件:

0000050: 2c22 e9ab 98e6 a1a5 e699 b622 0d0a 2237  ,".........".."7      =>中文对应编码为:e9ab 98e6 a1a5 e699 b6

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值