Home  >  Article  >  php教程  >  解决file_get_contents遇到中文文件名无法打开问题

解决file_get_contents遇到中文文件名无法打开问题

WBOY
WBOYOriginal
2016-06-13 09:47:00947browse

利用file_get_contents打开文件或采集远程服务器文件如果文名或url中碰到汉字中文那么会出现failed to open stream:Lnvalid argument in错误。

今天遇到一个很棘手的问题,客户用ftp向服务器传了一个文件,但是却无法被程序识别.查看代码后,没有发现问题,最后重演流程发现,客户上传的文件是中文命名的.于是小做测试发现,file_get_contents函数尽然不支持中文文件名文件.

       原有代码如下:

              $filename='哈.txt';

               echo file_get_contents('./'.$filename);

      执行以后显示结果:

       悲剧开始.

 

       之后试了不少判断方法,显示怀疑是不是编码问题,文件编码,代码编码一遍遍的排查,可是都是很匹配的啊.

       之后查了相关资料却没有找到,于是google了一下发现有人遇到这个问题,说是系统编码的问题,于是开始对文件名进行转码.

       文件用的是utf-8编码,但是系统默认为gbk.所以先把文件名转换gbk然后再读取.

       

              $filename='哈.txt';

               $filename=iconv('utf-8','gb2312',$filename);

               //echo file_get_contents(mb_convert_encoding('./哈.txt', 'gbk', 'utf-8')); (另一种方法)

               echo file_get_contents('./'.$filename);


       测试结果:

       读取成功.

       

       OK,大功告成.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn