首頁 >後端開發 >Python教學 >python中文亂碼問題總

python中文亂碼問題總

巴扎黑
巴扎黑原創
2016-12-03 10:57:161416瀏覽

將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、編碼轉換 
unicode,on2內部編碼為unicode. 
其它的編碼decode()為牢記python2內部編碼為unicode. 
其它的編碼decode()再編碼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'2376564'這樣輸出的沒有顯示漢字,是顯示漢字的其它編碼 

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

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'} 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn