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

利用file_get_contents打開文件或采集遠程伺服器文件如果文名或url中碰到漢字中文那麽會出現failed to open stream:Lnvalid argument in錯誤。

今天遇到一個很棘手的問題,客戶用ftp向伺服器傳了一個文件,但是卻無法被程序識別.查看代碼後,沒有發現問題,最後重演流程發現,客戶上傳的文件是中文命名的.于是小做測試發現,file_get_contents函數盡然不支持中文文件名文件.

原有代碼如下:

$filename='哈.txt';

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

執行以後顯示結果:

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

悲劇開始.

之後試了不少判斷方法,顯示懷疑是不是編碼問題,文件編碼,代碼編碼一遍遍的排查,可是都是很匹配的啊.

之後查了相關資料卻沒有找到,于是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);


測試結果:

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

讀取成功.

OK,大功告成.

更多相關文章
  • windows 8系統IE11無法打開問題解決辦法
    windows 8系統IE11無法打開怎麽辦呢?這個問題解決相對來說簡單,只要對注冊表進行
  • 解決win8系統WiFi萬能鑰匙無法打開問題
    win8系統WiFi萬能鑰匙無法打開怎麽辦呢?WiFi萬能鑰匙是一個WiFi密碼查詢工具 1.我們在電腦中下載安裝載Wifi萬能鑰匙了,如下所示安裝好了會有提示. 2.然後我們找到“Wifi萬能鑰匙”之後我們再右擊在彈出屬性,選擇裏面的兼容性. 3.在此如果你是win8系統就選擇兼容win8了,其它 ...
  • 本文章給大家介紹一個在jquery ajax回調函數中調用$(this)無法調用的問題解決方法,有需要的朋友可參考.在調用函數前先把$(this)存入變量,然後再在回調函數中使用就沒問題了. 代碼如下 $(document).ready(function(){$(“.del”).click(func
  • 下文來爲各位介紹解決mysqld_safe無法啓動問題的方法,如果你碰到mysqld safe無法啓動問題可以進入本站來參考解決方案啓動mysql時報錯:141220 07:50:59 mysqld_safe mys
  • 今天小編來給大家總結一下ubuntu12.04 mysql 無法啓動問題吧,導致ubuntu12.04 mysql 無法啓動的 原因有很多種,下面我總結常見的幾種,希望能對大家有所幫助.一,權限問題導致mysql無法啓動,在linux中權限是個很重要的東西,所以大多數據mysql無法啓動都與權限有問
  • 本文章來給大家介紹CentOS下wget操作無法resolve(解析)問題解決辦法,碰到此類問題的同學可參考.在某個VPS上執行wget操作結果超時,信息如下:•wget http://blog.is36.com/•--2012-09-15 09:13:14-- http://www.111cn.n
  • 文章分享一篇關于解決SQL Server Analysis Services無法啓動方法 ,有需要了解的朋友可以參考一下.本地計算機 上的 SQL Server Analysis Services (MSSQLSERVER) 服務啓動後又停止了.一些服務自動停止,如果它們沒有什麽可做的,例如“效能日
  • hotmail郵箱不能訪問怎麽辦呢,最近有很多朋友都碰到了這個問題,對于小編就來爲各位介紹一下hotmail無法登錄問題解決辦法吧,希望文章可以幫助到大家.問題狀態我的hotmail郵箱已經好幾天都打不開了.打開了也全是空白.裏面好多郵件看不到解決辦法1.通過特別鏈接地址 大家可能都是習慣了直接在浏 ...
一周排行