http://blog.csdn.net/mottolinux/article/details/52560062
1 關於Python編碼的基本常識
在python里面 “明文”是unicode類型和str , “密文”是其他的編碼格式 如gbk utf-8 latin-1等等
編碼: “明文”->”密文” .encode([目標編碼格式]) 對象必須為unicode類型
解碼: “密文”->”明文” .decode([源編碼格式]) 對象為str類型
對於漢字 一共有三大類編碼方式
以中文漢字”李”為例子
a. unicode類 機器碼 \x67\x4e
unicode(python表示) \u674e
HTML Entity 李
UTF-16(BE) 0x674E
UTF-32(BE) 0x0000674E
b. UTF-8類 機器碼 \xe6\x9d\x8e
UTF-8(python表示) \xe6\x9d\x8e
URL Escape Code %E6%9D%8E
Octal Escape Sequence \346\235\216
c. gb類 機器碼 \xc0\xee
gb2312 gbk gb18030 \xc0\xee
2 設置 .py文件上的中文編碼格式
(1)py文件內容上出現字符串上的中文
(2)包括前面帶u的(轉換成unicode格式的字符串) 首先也是根據設置的文件編碼格式讀取字符串文字量 再作unicode的轉換
(3)如果添加了#coding=utf-8,則將中文按utf-8轉成unicode
(4)如果沒有添加#coding=utf-8,則按系統默認的編碼格式
(5)系統的默認編碼,獲取代碼:
sys.getdefaultencoding()
3 如何設置.py文件的編碼格式:
(1)#coding=<encoding>
(2)<encoding>根據編輯器不同而不同
sublime 編輯器默認是utf-8
win7自帶的操作系統:asciii /gbk--要讀取中文,要gbk
可以另存為:utf-8
4 win7文件名是中文或者文件夾是中文
(1)都是gbk編碼
(2)讀寫文件時,必須open(.....encode('gbk'),'r')
5 win7文件上的內容包含中文
(1)和4的不一樣
(2)文件的內容要根據編碼的格式(記事本可能另存為)
(3)建議編碼成utf-8,sublime打開不需要轉換
6 爬蟲結果的存儲
(1)現在的網頁基本都是UTF-8編碼(HTML5默認編碼)
(2)經過BeautifulSoup處理后的HTML元素內容 類型為NavigableString
(3)可以直接print 由第3點可推斷出 NavigableString底層類型為unicode
(4)經過.replace()方法后可轉換為unicode類型
7 不提倡
(1)不使用sys.setdefaultencoding(‘utf-8’)解決編碼問題
8 其他
(1)字符串中間處理過程全部轉化為unicode處理 只在數據的入口和出口作相應的.decode()和.encode()處理