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()處理