fgetcsv函数的“陷阱”

       今天遇到一个奇怪的问题,前几天写的一个PHP解析CSV文件格式的代码,在本地运行正常,到了测试站上,就感觉像泄了气的球一样,不顶用了,而且只要是中文输入,总是不能正确读取,开始的时候怀疑是版本问题,因为本地装的是5.3的最新版,所以总是有所怀疑,可是看了手册,却推翻了我的这个问题。正纠结着,而且如果说无论输入什么都不能解析么,那也就罢了,奇就奇在,我第一行的中文他解析没有问题,第二行开始

的所有中文,他都解析不了,读取出来的都是空字串。也排除了我怀疑的编码问题。

       后来在手册中找到如下一句话 

   1: Note:
   2:  
   3: Locale setting is taken into account by this function. If LANG is e.g. en_US.UTF-8, files in one-byte encoding are read wrong by this function. 

然后google了下fgetcsv,才发现,原来确实是这样,fgetcsv函数对区域的设置是敏感的,对于单字节编码的文件读取时会出现错误。在网上也看到类是可行的解决方案:在执行之前先设置setlocale();地区信息。不过没验证该方法的可行度。

      最后是用fget来代替该方法。

 

 

Technorati 标签: php, fgetvsc, 中文读取不倒
speech.gif posted on 2011-05-16 17:00 肖虾米 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值