python中文亂碼問題匯總

來源:互聯網
上載者:User
將python2中漢字會出現亂碼的事一次性說清楚。
為了讓初學者,不再為python2中漢字出現亂碼的事煩惱!

請看迪艾姆公司python培訓上課老師黃哥細細道來:
1、寫的代碼模組需要指定編碼
如果代碼沒有指定coding,python就預設所有的字元為ASCII碼,
ASCII碼只支援256個字元,ASCII碼不支援中文,所以就報錯。
所以要在代碼前寫上#coding:utf-8或#coding:gbk
但通用寫上#coding:utf-8

2、python2內部所有編碼統一為unicode
unicode可以處理世界上所有語言的字元。
utf-8為unicode的一種實現形式,所以需要在代碼前寫上#coding:utf-8

3、編碼轉換
牢記python2內部編碼為unicode.
其它的編碼decode()為unicode,再編碼encode()為你指定的編碼,就不會出現亂碼。

4、網頁採集時
代碼指定#coding:utf-8
如果網頁的編碼為gbk
需要這樣處理:
html = html.decode('gbk').encode('utf-8')

5、代碼前也可以寫#coding:gbk,但也要保證你的代碼檔案的儲存格式為gbk.這個在windos下會出現這樣的問題。

6、字典等key或值的漢字問題
#coding:utf-8
dict1 ={1:'python周末培訓班',2:'諮詢010-68165761 QQ:1465376564'}

print dict1
# 這樣輸出的沒有顯示漢字,是顯示漢字的其它編碼

dict2 ={1:'python視頻培訓班',2:'諮詢010-68165761 QQ:1465376564'}
for key in dict2:
print dict2[key]

7、unicode的漢字編碼寫到文字檔中
需要根據文字檔的編碼進行轉換
可以encode('utf-8')或encode('gbk')

總結:凡是報錯資訊中出現的錯誤包含“ASCII”,就是沒有指定漢字編碼的問題。


----擷取字串的編碼類別型----------------------------------------------------------------
>>> date = urllib2.urlopen("http://www.baidu.com")
>>> d = date.read()
>>> import chardet
>>> chardet.detect(d)
{'confidence': 0.99, 'encoding': 'utf-8'}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.