程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 解決file_get_contents遇到中文文件名無法打開問題

解決file_get_contents遇到中文文件名無法打開問題

編輯:關於PHP編程

利用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,大功告成.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved