We stand alone,
together.
- BAND of BROTHERS
fgetcsv引起basename异常
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 的源代码来看似乎也没什么特别的操作,依然困惑中。
This Entry was Last Modified on 2007-09-19 01:36
日志存档
继续阅读
ac米兰 ajax apache api blog blogchina cctv css dhtml download dreamhost dvd encoding error feeds firefox flash framework gmail google google_analytics google_talk http ide ie ie7 javascript jquery linux maxthon mod_rewrite movies msn mvc mysql oracle php pippo pivot rss shell socket sohu spammers svn vs web web2 webclient weblogic windows xml zend 阿根廷 安全漏洞 奥运 备份 变形金刚 程序员 地铁 浮动层 搞笑 工具 冠军杯 管理 火箭 进程 客户端 篮球 厉 旅行 命令行 欧洲杯 人生 设计模式 世界杯 数据库 搜索引擎 算法 图片 无极 系统优化 笑话 姚明 游戏 源代码 周杰伦 字符编码 足球 浏览器


http://www.sy555.com