python 中文亂碼出現,不知道是什麼原因?

時間 2021-05-30 18:18:59

1樓:小頭

首先在簡中 windows中,cmd終端預設使用的編碼為 cp936,可通過以下方式檢視.

Python2的print在cmd時輸出時,能正常顯示的資料有兩種:

unicode型別(輸出時自動轉換成gbk編碼)

以gbk編碼的str型別

如果遇到以utf-8編碼的str型別,就會出現亂碼

原來的URL失效了,我隨便拿了個位址測試,如

也出現了問題中的亂碼。

檢視網頁原始碼可以發現

網頁使用的是utf-8編碼,而 urllib的read返回的是str型別,也就是以utf-8編碼的str型別,因此出現了問題中的亂碼。

前面幾個答案提到通過 .decode('utf-8').encode('gbk') 方式輸出,其實就是前面說的第2種資料(將網頁內容轉換為gbk編碼的str型別),這樣一來看似解決了亂碼,實際執行還是會遇到問題,例如輸出租房面積時,"m" 中的上標2無法正確轉換 :

(html = u'15m'

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

Traceback (most recent call last):

File "test.py", line 40, in

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

File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode

return codecs.utf_8_decode(input, errors, True)

UnicodeEncodeError: 'ascii' codec can't encode character u'\xb2' in position 3: ordinal not in range(128)

建議解決方法:

換用支援utf-8的終端

該方法實際同1:在cmd執行指令碼前,執行 "chcp 65001" 將cmd臨時設為utf-8編碼,這樣可以直接print,不用再進行解碼編碼

2樓:葛洋

主要原因在於:windows 下的cmd.exe的預設中文編碼是gbk。

所以你的程式在pycharm等編輯器執行正常,而在CMD中變成亂碼。可以嘗試更改UTF-8為GBK就可以正常在CMD中顯示。但是,這種情況下,PYCHARM中又是亂碼了。

或者你可以更改CMD的預設漢字編碼。

3樓:Haart

不需要改coding,更不需要換Linux。

問題原因有兩個:

1 urllib獲取的結果是位元組串,而不是字串。

2 輸入文字到控制台時需要使用控制台可以相容的字元編碼。

所以解決辦法是:

1 把urllib獲取的位元組串解碼,得到字串。具體採用哪種編碼格式來解碼要看網頁。

2 把字串編碼,編碼格式要用本地控制台相容的編碼(比如gbk)。

4樓:

先用瀏覽器檢視該網頁是用什麼進行編碼的,然後在Python中用對應方式進行decode。

PS:我只在Windows下寫Python遇到過中文亂碼,在Ubuntu下,從未遇到!!!!!!!

如何理解 不知道自己不知道 知道自己不知道 知道自己知道 不知道自己知道?

鄧寧 克魯格效應,這張圖的最新理解。如果我們用表象和本質簡單粗暴的劃分事物認知等級。2 知道自己不知道 慢慢意識到事物發展層次,以及有不同的發展階段,不同的階段對應著不同的特徵和需求,比如馬斯洛人類發展金字塔,知道了有些事情只有在獲得經濟安全後才能充分發展,比如道德,比如體面,比如情懷。知道了表象不...

不知道為什麼會出現這樣的問題?

解永盛 首先靠臉吃飯做平面模特是可以的 認穴無訛,針灸是可以的 天賦技能會背誦和深刻理解各行業高度專業的東西,看到對方實操的一眼識破其套路和準確預判未來走勢,可以視萬物為韭菜 勝任投行,勝任企劃,及大多數的業務部門老大 一三呃 語嫣妹妹由於本人的記憶力極高,因而適合做一些記錄的工作。助理方面工作很適...

看現在程式設計很火,想自學Python,但不知道會有什麼用,大神有什麼建議?

小U諮詢 小U諮詢 Python語言的前景 方向 優缺點 就業情況分析 Python的就業方向 web方向 因為python學習的其中乙個階段就是python全棧開發,主要是學後端框架 專案實戰,通過這一階段的學習,學生不僅能夠掌握js在網路前端中的使用,還能夠把js作為一門通用語言來運用,為學生將...