php 讀取文件亂碼問題
更新時(shí)間:2010年02月20日 11:00:44 作者:
php 5的流讀取函數(shù)好像默認(rèn)編碼是UTF-8,以前在php 4里直接file_get_contents()讀取gb2312編碼的正常,到了5就亂碼了。
網(wǎng)上的解決辦法說(shuō)抓取后用iconv()轉(zhuǎn)碼??春笪揖陀X 得不對(duì)勁:一個(gè)是不一定編譯了iconv庫(kù),更大的問題是編碼都跟流轉(zhuǎn)換的時(shí)候有關(guān)(如果用了iconv實(shí)際上php轉(zhuǎn)了兩次碼:流 -> UTF-8 -> GB2312):這不是白忙乎了嗎?
仔細(xì)看了下php的文檔(不知道大家都是怎么寫代碼的,其實(shí)文檔上很清楚?。?,上面關(guān)于fopen()及file_get_contents()都 提到了“默認(rèn)是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 custom context or by changing the default using stream_default_encoding().)。于是用stream_default_encoding('gb2312′);測(cè)試:但是 faint的是,這個(gè)函數(shù)不存在?!似乎php 6才支持。不過天無(wú)絕人之路,還有“用戶自定義上下文屬性”可以用。
經(jīng)過更仔細(xì)的看文檔,最后解決了這個(gè)問題:
//設(shè)置流的編碼格式,這是文件流(file),如果是網(wǎng)絡(luò)訪問,file改成http
$opts = array('file' => array('encoding' => 'gb2312'));
$ctxt = stream_context_create($opts);
file_get_contents(文件名, FILE_TEXT, $ctxt);
仔細(xì)看了下php的文檔(不知道大家都是怎么寫代碼的,其實(shí)文檔上很清楚?。?,上面關(guān)于fopen()及file_get_contents()都 提到了“默認(rèn)是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 custom context or by changing the default using stream_default_encoding().)。于是用stream_default_encoding('gb2312′);測(cè)試:但是 faint的是,這個(gè)函數(shù)不存在?!似乎php 6才支持。不過天無(wú)絕人之路,還有“用戶自定義上下文屬性”可以用。
經(jīng)過更仔細(xì)的看文檔,最后解決了這個(gè)問題:
復(fù)制代碼 代碼如下:
//設(shè)置流的編碼格式,這是文件流(file),如果是網(wǎng)絡(luò)訪問,file改成http
$opts = array('file' => array('encoding' => 'gb2312'));
$ctxt = stream_context_create($opts);
file_get_contents(文件名, FILE_TEXT, $ctxt);
您可能感興趣的文章:
- php讀取二進(jìn)制流(C語(yǔ)言結(jié)構(gòu)體struct數(shù)據(jù)文件)的深入解析
- PHP讀取文件內(nèi)容的五種方式
- php讀取本地文件常用函數(shù)(fopen與file_get_contents)
- PHP讀取txt文件的內(nèi)容并賦值給數(shù)組的代碼
- PHP讀取網(wǎng)頁(yè)文件內(nèi)容的實(shí)現(xiàn)代碼(fopen,curl等)
- php逐行讀取txt文件寫入數(shù)組的方法
- 用PHP讀取超大文件的實(shí)例代碼
- php讀取文件內(nèi)容到數(shù)組的方法
- PHP實(shí)現(xiàn)類似于C語(yǔ)言的文件讀取及解析功能
相關(guān)文章
PHP5.5在windows安裝使用memcached服務(wù)端的方法
這篇文章主要介紹了PHP5.5在windows安裝使用memcached服務(wù)端的方法,需要的朋友可以參考下2014-04-04PHP Laravel門面的實(shí)現(xiàn)原理詳解
在Laravel中,門面為應(yīng)用服務(wù)容器中綁定的類提供了一個(gè)“靜態(tài)”接口,使得我們可以不用new這些類出來(lái),就可以直接通過靜態(tài)接口調(diào)用這些類中的方法。本文就來(lái)詳細(xì)聊聊Laravel門面的實(shí)現(xiàn)原理,希望對(duì)大家有所幫助2023-02-02php將xml轉(zhuǎn)化對(duì)象的實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于php將xml轉(zhuǎn)化對(duì)象的實(shí)例詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2021-10-10PHP中使用xmlreader讀取xml數(shù)據(jù)示例
這篇文章主要介紹了PHP中使用xmlreader讀取xml數(shù)據(jù)示例,本文示例相對(duì)簡(jiǎn)單,只包含了一個(gè)讀取功能,需要的朋友可以參考下2014-12-12PHP基于cookie實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能示例
這篇文章主要介紹了PHP基于cookie實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能,涉及php文件讀寫、cookie訪問、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01php cookie中點(diǎn)號(hào)(句號(hào))自動(dòng)轉(zhuǎn)為下劃線問題
這篇文章主要介紹了php cookie中點(diǎn)號(hào)(句號(hào))自動(dòng)轉(zhuǎn)為下劃線問題,需要的朋友可以參考下2014-10-10