網路上的解決方法說抓取後用iconv()轉碼。看後我就覺得不對勁:一個是不一定編譯了iconv庫,更大的問題是編碼都跟流轉換的時候有關(如果用了iconv實際上php轉了兩次碼:流-> UTF-8 - > GB2312):這不是白忙乎了嗎?
仔細看了下php的文檔(不知道大家都是怎麼寫程式碼的,其實文檔上很清楚啊),上面關於fopen()及file_get_contents()都提到了「預設是UTF-8 ,但是使用者可以用stream_default_encoding()或使用者自訂上下文屬性改變編碼」(If unicode semantics are enabled, the default encoding of the read data is UTF-8. You can specify a different encoding by creating a cus context or by the default using stream_default_encoding().)。於是用stream_default_encoding('gb2312′);測試:但是 faint的是,這個函數不存在? !似乎php 6才支援。不過天無絕人之路,還有「用戶自訂上下文屬性」可以用。
經過更仔細的看文檔,最後解決了這個問題:
程式碼如下:
//設定流的編碼格式,這是檔案流(file),如果是網路訪問,file改成http
$opts = array('file' => array('encoding' => 'gb2312')); $ctxt = stream_context_create($opts); file_get_contents(文件名, FILE_TEXT, $ctxt);
以上就介紹了魔獸世界無法讀取所需文件php 讀取文件亂碼問題,包括了魔獸世界無法讀取所需文件方面的內容,希望對PHP教學有興趣的朋友有幫助。