php专区

 首页 > php专区 > PHP高级 > 文件上传 > 解决file_get_contents遇到中文文件名无法打开问题

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

分享到:
【字体:
导读:
          利用file_get_contents打开文件或采集远程服务器文件如果文名或url中碰到汉字中文那么会出现failed to open stream:Lnvalid argument...

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

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

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

  1. $filename='哈.txt'
  2. echo file_get_contents('./'.$filename); 

执行以后显示结果:warning:file_get_contents(./哈.txt)[function.file-get-contents]:failec to open stream:Invalid argument in D:AppServwww1.php

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

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

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

  1. $filename='哈.txt'
  2.  $filename=iconv('utf-8','gb2312',$filename); 
  3.  //echo file_get_contents(mb_convert_encoding('./哈.txt', 'gbk', 'utf-8')); (另一种方法) 
  4. echo file_get_contents('./'.$filename); 

测试结果:读取成功.OK,大功告成.

分享到:
PHP操作文件问答 - php文件操作
PHP操作文件问答 前言:PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操作的一些问题收藏吧。 问:如何...
解决php中file_get_contents 读取大文件...
解决php中file_get_contents 读取大文件返回false问题 file_get_contents文件是用来读写文件的,但我发现用file_get_contents 读取大文件出错提示Note: string can be as large as 2GB了,这个就是不能超过2G了,有没有办法解决呢?如果我读取一个 www.phpfensi.com 文件,代码如下: $u ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……