@ZEAL Blog·厉
We stand alone,
TOGETHER.

fgetcsv引起basename异常

Posted by zeal on 2007-09-19 01:34 , 450 characters |  + 0 - 0   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/539 MaDe1nZEAL
标签 ( PHP ):  , 

CentOS 服务器上的 LANG=en_US.UTF-8 ,当php脚本里面使用了 fgetcsv 对某个 GBK 编码的 csv 文件进行解析之后, basename 函数就再也无法正常工作了,每次调用返回的文件名始终为空字符串,该问题甚至会在整个 apache 的 httpd 线程生命周期内存在。 windows 下似乎不会出现这种情况。

解决方法:在用 fgetcsv 处理文件之前先设置 setlocale(LC_ALL,'zh_CN.GBK'); 或者通过 iconv / mb_convert_encoding 等方式将整个 GBK 编码的文件先转化为 utf-8 编码。

理论上来说 fgetcsv 应该只是一个字符串解析的过程,即便输入字符串的编码格式出现问题,最多也就是解析返回的数组乱掉而已,怎么会影响到 basename 函数的正常运作并在线程周期内持续作怪?从 php 的源代码来看似乎也没什么特别的操作,依然困惑中。

Last Modified on 2007-09-19 01:36
1 条评论:
- 可儿2007-11-19 22:02
不是很好用其实
http://www.sy555.com
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | Back To Home | @ZEAL | 沪ICP备05024379号