1. 程式人生 > >PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法,GZIP

PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法,GZIP

這篇文章主要介紹了PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法,可以通過使用curl配置gzip選項來解決,具有一定的參考借鑑價值,需要的朋友可以參考下

本文例項講述了PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法。分享給大家供大家參考。具體方法如下:

file_get_contents函式本來就是一個非常優秀的php自帶本地與遠端檔案操作函式,它可以讓我們不花吹揮之力把遠端資料直接下載,但我在使用它讀取網頁時會碰到有些頁面是亂碼了,這裡就來給各位總結具體的解決辦法.

根據網上有朋友介紹說原因可能是伺服器開了GZIP壓縮,下面是用firebug檢視我的網站的頭資訊,Gzip是開了的,請求頭資訊原始頭資訊,程式碼如下:

複製程式碼程式碼如下:Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 
Connection keep-alive 
Cookie __utma=225240837.787252530.1317310581.1335406161.1335411401.1537; __utmz=225240837.1326850415.887.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=%E4%BB%BB%E4%BD%95%E9%A1%B9%E7%9B%AE%E9%83%BD%E4%B8%8D%E4%BC%9A%E9%82%A3%E4%B9%88%E7%AE%80%E5%8D%95%20site%3Awww.nowamagic.net; PHPSESSID=888mj4425p8s0m7s0frre3ovc7; __utmc=225240837; __utmb=225240837.1.10.1335411401 
Host www.jb51.net 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
可以從header資訊中找到 Content-Encoding 項是 Gzip.

解決辦法比較簡單,就是用 curl 代替 file_get_contents 去獲取,然後在 curl 配置引數中加一條,程式碼如下:

複製程式碼程式碼如下:curl_setopt($ch, CURLOPT_ENCODING, "gzip");

今天用 file_get_contents 抓圖片的時候,開始沒發現這個問題,廢了老大勁才找出來.

使用自帶的zlib庫,如果伺服器已經裝了zlib庫,用下面的程式碼可以輕易解決亂碼問題,程式碼如下:

複製程式碼程式碼如下:$data = file_get_contents("compress.zlib://".$url);

希望本文所述對大家的PHP程式設計有所幫助。

相關推薦

PHP使用file_get_contents網頁中文亂碼問題解決方法GZIP

這篇文章主要介紹了PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法,可以通過使用curl配置gzip選項來解決,具有一定的參考借鑑價值,需要的朋友可以參考下本文例項講述了PHP中使用file_get_contents抓取網頁中文亂碼問題解決方法。分享

Tomcat 日誌(控制檯)中文亂碼解決方法

背景: windows系統以Linux指令碼啟動服務 問題 在Tomcat中有時輸出的日誌中文為亂碼,包括控制檯視窗和輸出日誌檔案中都為亂碼。 解決方案 JDK引用的設定 Java引用引數新增"-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8" 將上面

file_get_contents網頁亂碼的2種解決方式

今天自己在寫一個程式,抓取別人的網頁,之前公司有些功能也會需要,但是今天在抓取網頁的時候發現了一個問題 用file_get_contents抓取網頁發現如截圖所示的亂碼情況 於是用轉換編碼 $contents = iconv("gb2312", "utf-8//IGNO

Python 網頁gb2312亂碼問題

發現 file read earch () spa .com pycharm close python 爬取學校所有人四六級成績時發現爬出網頁中文亂碼 遂google 得到一解決方案 # -*- coding:utf8 -*- import urllib2

PHP使用CURL網頁

CURL是一個非常強大的開源庫,支援很多協議,包括HTTP、FTP、TELNET等,我們使用它來發送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的HTTP協議引數,並且支援HTTPS。CURL可以根據URL字首是“HTTP” 還是“HTTPS”自動選擇是否加密傳送內容。使用CURL的PHP擴

使用HttpWebRequest和HtmlAgilityPack網頁(無亂碼)

public string HttpGet(string url) { string responsestr = ""; HttpWebRequest req = HttpWebRequest.Create(url) as HttpWe

(PHP)用cURL網頁資訊並替換部分內容

<?php /** * 用cURL抓取網頁資訊並替換部分內容 * User: Ollydebug * Date: 2015/11/11 * Time: 19:13 */ $curlo

python爬網頁中文亂碼解決方案。python3

``` r = requests.get('http://www.xxxxxxxxxxxxxxx.html') print(r.text) ``` 初次試寫python爬蟲爬取網頁小說, 在第一個網站的時候沒問題   第二個網站竟然中文亂碼 很是尷尬 多方求助

php使用curl網頁顯示空白的問題.

新手一般在使用php cURL的時候會遇到抓取網頁空白的問題,而導致這個問題的原因是新手忽略了http和https的區別。簡單的理解下https是http的安全加強版,https是加密的 我們可以嘗試

python&amp;php數據、爬蟲分析與中介有網址案例

網絡 數據抓取 不定 pytho span article 抓取 取數據 data- 近期在做一個網絡爬蟲程序。後臺使用python不定時去抓取數據。前臺使用php進行展示 站點是:http://se.dianfenxiang.com python&a

Java Web Servlet 中文亂碼解決方法

Servlet中文亂碼問題解決方法 import java.io.*; import java.net.URLEncoder; import javax.servlet.*; import javax

xshell出現中文亂碼解決方法

        作為一個IT程式設計師,經常需要遠端登入Linux系統的伺服器,使用工具Xshell工具,但是很多時候出現中文問題。根本原因為遠端伺服器Linux系統和本地系統的編碼不一致導致的 。此處的資訊雖然是“總共76”兩個中文漢字,但還是顯示亂碼。一、問題原因:1、遠

php var_dump 列印不全中文亂碼解決方法

列印不全: 解決方法: 在php.ini裡的xdebug節點中,追加一下配置: 1 2 3 4 5 xdebug.var_display_max_children=128 xdebug.var_display_max_data=512

idea軟體編碼已經設定好了為utf-8但是svndown下來的檔案格式本身不是utf-8的此時開啟後會出現中文亂碼解決方法

我是個idea的忠實使用者,新公司的專案都是用eclipse做的,通過svn拉下程式碼後發現,註釋的內容裡,中文內容都是亂碼。問過專案負責人,說可能是GBK編碼。 但是,我通過idea的setting設定了編碼,試了5種編碼都沒用,中文內容還是亂碼。最後還是自己試出來解決方案。 詳細的原因請參考

javaweb中文亂碼解決方法總結之response和request解決方法

一中文論碼問題出現的由來         之所以會產生亂碼問題,不僅僅是中文亂碼,其原因就在於:編碼和解碼採用了不同的碼錶。而之所以會有編碼和解碼這一回事,也是因為,無論資料是在傳輸還是儲存等等過程中

jspGet提交方式的中文亂碼解決辦法

解決辦法:   步驟1.  加過濾器,即在filter裡的init()里加上request.setCharacterEncoding("utf-8");相當於每個頁面的編碼都是utf-8, 步驟2.  將表單提交方法改成post方式,至於get方式的解決目前還不知道 上面兩

包工具 Charles Response Contents中文亂碼解決方法(新)

轉載自:https://www.cnblogs.com/mrjade/p/7677051.html用到Charles,下載最新的4.0.1版本,但是發生亂碼問題。百度好久才找到個靠譜的,那些說什麼在Info.plist檔案加字串的,都是假的,反正我是試了都沒用,這裡記下詳細的

Pythonrequests.get響應內容中文亂碼解決方案

Requests原始碼包解析原理 分析requests的原始碼發現,text返回的是處理過的Unicode型的資料,而使用content返回的是bytes型的原始資料。也就是說,r.content相對於r.text來說節省了計算資源,content是把內容bytes返回. 而text是decode成

html Charset=UTF-8還是中文亂碼 解決辦法

utf-8是國際編碼,包括漢字,建議都設定成utf-8,省心; 步主如下: 第一:定義網頁顯示編碼。如果不定義網頁編碼,那麼我們瀏覽網頁的時候,IE會自動識別網頁編碼,這就有可能會導致中文顯示亂碼了。 所以我們做網頁的時候,都會用“<meta http-equiv=”

Python網頁&批量下載檔案方法初探(正則表示式+BeautifulSoup)

最近兩週都在學習Python抓取網頁方法,任務是批量下載網站上的檔案。對於一個剛剛入門python的人來說,在很多細節上都有需要注意的地方,以下就分享一下我在初學python過程中遇到的問題及解決方法。 一、用Python抓取網頁 基本方法: import urllib