首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

fgetcsv函数的“陷阱”

作者:  时间: 2011-05-16

       今天遇到一个奇怪的问题,前几天写的一个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 标签: ,,