解決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.通過特別鏈接地址 大家可能都是習慣了直接在浏 ...
一周排行
  • 有時我們的網站需要獲取flash文件的尺寸信息,php有一個內置的函數可以實現,這個函數就是getimagesize,他可以返回圖像的尺寸及文件類型的一個數組.如果你還想著通過解析swf文件頭信息來獲取flash文件 ...
  • 要文章轉一朋友的的JavaScript正則表達式常用代碼,下面我整理了一些有需要了解的同學不防參考一下.匹配結尾的數字來源:如何用 javascript 正則表達式 取出字符串最後一組數字,謝謝如30CAC0040
  • 我們先來個個介紹一下關于php 批量下載圖片文件和css中圖片的方法,這個我們都會用到了file_put_contents()函數了,下面看第一個批量下載圖片. 代碼如下 set_time_limit(0);//設置
  • text-overflow:ellipsis使作用就是當文字超過指定長度時我們就會在文本最後面增加省略號了,在ie浏覽器中這個是沒有問題的, 但在Firefox浏覽器中就會出現省略號浮動在上面了,下面我把我的解決辦法 ...
  • xss漏洞攻擊與防止辦法xss又叫css教程 (cross site script) ,跨站腳本攻擊.它指的是惡意攻擊者往web頁面裏插入惡意html代碼,當用戶浏覽該頁之時,嵌入其中web裏面的html代碼會被執行
  • iphone qq2013退不出來是我今天把iphoneQQ登錄了,結果我退了還是能收到消息,關機重啓還是能收到消息,沒辦法只有把QQ刪除了才好,下面是網友們的一些iphone qq2013退不了的解決辦法.一,像我
  • 如果我們要動態載入js文件最簡單辦法就是使用jquery ajax中的getscript方法了,其它的還有我們自己寫的一些方法,下面總結一下動態載入js與css文件.jquery動態載入css,js文件方法簡單很,例
  • IE浏覽器地址欄輸入192.168.1.1無法進入路由器登錄界面
    如果我們家裏配置了路由器我們只要輸入指定的IP就可以進入到路由器了,但小編碰到在IE浏覽器
  • 本文章來給介紹同學介紹centos上安裝php運行環境(手記),一個站長的操作過程,有需要了解的朋友可參考.-, 配置apache1.關閉防火牆service iptables stopchkconfig iptab ...
  • php + mssql 讓真讓人痛苦.這些讀 php 讀 mssql 的 ntext 字段類型問題又來了:當 ntext 的內容過長時,居然讀不完整.在網上找了很久,都是說 php 讀 ntext 出錯的,但沒發現我 ...