天天看點

Python的編碼問題

在看《Dive Into Python》有一章是對XML的處理,其中寫着

import sys

sys.setdefaultencoding('iso-8859-1')

而我使用urlopen寫一個采集小程式時,遇上了一個編碼問題。以抓取百度首頁為例:

當列印htmlSource時,會發現出現亂碼的情況了,原因是百度預設的編碼是gb2312,而python預設的編碼格式為ascii(可通過列印sys.getdefaultencoding() 顯示出來)

為什麼import sys後,然後使用sys.不會自動提示顯示出setdefaultencoding呢?之後搜尋了一下:

python的初始化腳本site.py會把sys子產品的setdefaultencoding方法删除,python在初始化完畢之後,禁止使用者改變預設編碼。

還有就是在抓取到頁面後,需要對頁面進行一個解碼動作(decode),完整的demo代碼将會如下所示: