在IT编程界,中文乱码一直是个头疼的问题。但是,只要时常总结出现的问题,以后再遇到相同的情况,直接在博客里查找就可以了。
今天,有一个朋友在我的另一篇关于PHP作下载功能的博文(www.gretheer.com/2013/06/php-download.html)里发现,在浏览器地址栏(URL)中输入中文,下载功能就出现了异常。经过调试代码,我发现是 fopen 打开中文文件名的文件引起的。下面,咱们就来举例说明:
代码:
1 | $handle = fopen ( '忙碌的松鼠.doc' , 'r' ); |
报错:Warning: fopen(忙碌的松鼠.doc) [function.fopen]: failed to open stream: Invalid argument in Dc:/folder/index.php on line 2
fopen 并不能直接识别中文,所以我们需要转码才可以实现,正确代码如下:
1 | // 对文件名的编码,避免中文文件名乱码 |
2 | $handle = open ( iconv ( 'UTF-8' , 'GBK' , '忙碌的松鼠.doc' ), 'r' ) |
http://www.gretheer.com/2013/06/php-fopen-filename-zh-cn.html