導航:首頁 > 編程語言 > python列印網頁亂碼

python列印網頁亂碼

發布時間:2024-04-14 05:58:40

python IDLE 控制台輸出亂碼問題怎樣解決

在源代碼開激拆始處加上如下這句:

# -*- coding: GBK -*-

...... 其他 Python 源代碼 ......

然後,選擇 IDLE 的菜單 Options ->
Configure IDLE... 打開 IDLE 的配置選項,切換到 General 選項卡,找到 Default Source
Encoding 設置項,選中 Locale-defined 選項,點擊 Apply 按鈕,再點擊 OK 以便保存設置。

關閉退出 IDLE 並重寫鄭尺打開 IDLE 集成明叢棗開發環境,此時你再試一下:

② 璇鋒暀鍏充簬python杈撳嚭涓鏂囦貢鐮佺殑闂棰

浜哄剁綉欏甸噷鍛婅瘔浣犱簡

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

浣犲湪windows涓嬮粯璁ょ殑鏄疓BK錛屽綋鐒秛tf-8鐨勪腑鏂囨槸涔辯爜浜

print html3.decode('utf-8').encode('gbk')

浣犲啀璇曡瘯

③ 用python抓取的網頁保存後為什麼亂碼

從你給的代碼來是Python2。我下面給一個基於Python3的代碼,可以參考一下:

romurllib.requestimporturlopen;
fromurllib.parseimportquote;
rawtext=urlopen('http://www.ccnu.e.cn',timeout=15).read();
print(rawtext)
rawtext=rawtext.decode('gbk')
print(rawtext)
f=open('ccnu.txt','w',encoding='utf8');
f.write(rawtext)

大概的原理是,在Python3下面,抓取到的頁面默認是byte類型的(通過第4行輸出的結果就可以看出來),我們需要根據網頁的實際編碼進行處理。本例中給的網頁使用的是gb2312。所以,我要先以gbk的格式進行解碼(gbk包含了gb2312,能夠表示更多的漢語字元),解碼後實際上得到的就是unicode碼了,由於我的控制台編碼設置的是utf8,在列印時系統會自動將字元串從unicode轉為utf8,所以第6行控制台列印結果正常;第7行寫入文件時也要指定文件的編碼格式,我這里選擇的是utf8,當然用gbk也是一切正常的,因為這個編碼設置的是保存文件的編碼,而不是原來那個網頁內容的編碼了。字元串編碼和文件編碼不是一回事。打開ccnu.txt發現無亂碼。

Python2的代碼我不熟。

建議你也在代碼中添加print 看控制輸出是否正常。如果控制台輸出正常,則有可能是在保存頁面文件時,沒有正確指定內容字元串的encode格式。或者把所有gb2312換為gbk再試試。

反正Python2下面極容易出現漢字亂碼,如果能理解編碼encode和解碼decode的含義,了解Python2的字元串處理過程,就可以避免這些問題。

④ Python+requests 爬取網站遇到中文亂碼怎麼辦

1. 遇到的中文亂碼問題
1.1 簡單的開始
使用requests來拔取網站內容十分方便,一個最簡單的代碼段只需要2-3行代碼就行。

點擊(此處)折疊或打開

⑤ python3,pycharm,寫爬蟲時遇到列印的結果亂碼,希望得到大神的幫助,謝謝啦

這個問題主要是編碼問題,一般需要檢查系統設置、ide設置、python代碼里的編碼,一致改成utf8一般就沒問題。
windows中文默認是gbk,ide就要相應改成gbk才能顯示完整

⑥ python編程中中文輸出亂碼UnicodeEncodeError: 'ascii' codec can't encode character

樓主你好!

其實按照你的代碼的邏輯來做是沒有錯的,無法顯示成utf-8編碼的文本其實是因為在request請求的時候,按照網頁的標識轉了碼,接著BeautifulSoup把已經是utf-8的文本又強轉了一次utf-8編碼,導致了無法正確的顯示,以想要拿到的時間為例,其實程序的目標字元串應該如下:

#-*-coding:utf-8-*-

'''我們想要使用的字元串'''
target_str=':53'

'''兩次轉碼後的字元串'''
get_str=u':53'


歸根結底是兩個對象的類不同,但python不支持這兩種類型的強轉,個人想了個比較臨時的解決方案,算是個python打了個補丁,就是將字元串轉成二進制,再轉回字元串,這樣就unicode就不用給他加上編碼方式再轉成二進制字元串了,修改後的代碼如下:

#-*-coding:utf-8-*-
importrequests
frombs4importBeautifulSoup
fromdatetimeimportdatetime

defencode(s):
'''將字元串轉成二進制'''
return''.join([bin(ord(c)).replace('0b','')forcins])

defdecode(s):
'''將二進制轉換成字元串'''
return''.join([chr(i)foriin[int(b,2)forbins.split('')]])

res=requests.get('
)
res.encodeing='utf-8'

soup=BeautifulSoup(res.text,'html.parser')

'''每個中文字元都進行轉換處理'''
title=decode(encode(soup.select('#artibodyTitle')[0].text))
time=decode(encode(soup.select('.time-source')[0].contents[0].strip()))

chinese='%Y年%m月%d日%H:%M'
timesource=datetime.strptime(time,chinese)
print(title)
print(timesource)

看樓主在研究的過程中,對字元串的編碼原理的理解還有所欠缺,這方面的資料在網上很多,可以再自行研究一下,能夠獲得長足的進步。

望採納,謝謝!

⑦ python命令行輸入中文亂碼怎麼辦

python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。

在python3不存在該問題

運行結果:

原因

中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。

相關推薦:《Python基礎教程》

解決方法

有如下兩種方法可以解決這個問題

方法一

我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:

修改後運行結果:

方法二

當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:

·chcp 65001 就是換成UTF-8代碼頁

·chcp 936 可以換回默認的GBK

但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。

⑧ python2.7列印中文亂碼怎麼辦

由於python默認以ASCII編碼,所以不支持中文。所以我們需要在代碼前面寫上「#_*_ coding:utf-8 _*_」或者#coding=utf-8.當然,如
果你代碼中沒有中文,就不需要加上了。
還有一個原因,由於python所運行的操作系統決定的,windows默認的編碼方式是GBK編碼,所以這也是一個導致中文亂碼的原因之
一。
建議是不管你用什麼,先在代碼前面加上這一串,一定不會出現問題。
推薦學習《Python教程》。

⑨ python 中文亂碼問題

記事本是用utf-8保存你下載了東西的。你下載下來的不是utf-8,保存下來中文當然就亂碼了。而gbk和utf-8里英文的編碼值都一樣,所以不受影響。

一個方法是你留意下目標頁面的charset 和 contentType,另一個方法是你復制一個目標頁面的字,放cmd里看它的編碼長度,以此來判斷它的原來編碼。

閱讀全文

與python列印網頁亂碼相關的資料

熱點內容
安卓手機玩游戲不卡怎麼設置 瀏覽:568
編譯鏈接裝載書 瀏覽:537
面試騰訊公司程序員 瀏覽:108
一個字母y是什麼app 瀏覽:142
魔獸大腳解壓安裝教程 瀏覽:7
超時代共享文件夾破解版 瀏覽:441
命令與征服紅色警戒3攻略 瀏覽:724
解壓縮jar包 瀏覽:586
如何計算伺服器的最大並發數 瀏覽:345
java數組類型定義 瀏覽:850
安卓卡一和卡二怎麼切換 瀏覽:985
用價值觀統領演算法強化責任 瀏覽:783
外匯阿里雲伺服器買哪一種類型 瀏覽:448
紹興程序員接私活攻略 瀏覽:644
java獲取上傳圖片 瀏覽:49
主次梁交叉處箍筋加密長度 瀏覽:967
快遞時效的演算法 瀏覽:585
菜譜大全pdf 瀏覽:318
怎麼在風雲pdf上把文件夾匯總 瀏覽:881
java創建子類 瀏覽:533