python編碼是個博大精深的知識,而我還是出血python,所以我目前所要求自己的僅僅是在自己的爬取網頁獲取中文信息時不會出錯,僅此而已,對於其他更深層次的內容隨着知識的積累想必有更深刻的理解。以下並不是我的原創理解,而是在網上查閱很多博主有想法更直觀的表達后自己才能對這些編碼有更直認識,感謝他們
首先附上中文編碼比較,更直觀的顯示出不同編碼對文字輸出的影響
編譯環境是wingide win8.1
輸入#-*- coding:utf-8 -*-
s='ab我是中文字符串'
ss=u'ab我是中文字符串'
u=s.decode('utf-8')
print s
print repr(s)
print ss
print repr(ss)
print u
print repr(u)
輸出
ab鎴戞槸涓枃瀛楃涓?'ab\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
ab我是中文字符串
u'ab\u6211\u662f\u4e2d\u6587\u5b57\u7b26\u4e32'
ab我是中文字符串
u'ab\u6211\u662f\u4e2d\u6587\u5b57\u7b26\u4e32'
由上可以知道當輸入時utf-8格式編碼的時候,輸出文字為亂碼,而輸入時unicode時輸出不會亂碼
而且decode是解碼,而decode(utf-8(源網頁的編碼格式))的目的就是將原網頁的編碼格式轉化成unicode然后輸入,使中文不會亂碼
而encode是解碼,跟上面的作用相反
另外介紹一個chardet命令,使用這個命令可以讓你知道源網頁的編碼是什么,然后再進行解碼就好了,問題完美解決。