在python中使用mechanize從網上拉下一張網頁,使用read()讀取頁面內容後,print顯示。在ide(eclipse)中直接運程式後,顯示中文正常。但在shell中測試時,read()後print的顯示就是亂碼了。
程式原始碼
print s執行後顯示:
doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "">
一切正常,但在shell中測試時,按行輸入上述**,顯示卻是:
'\xef\xbb\xbf\r\n\r\n\r\n \r\n
使用decode('utf8')轉碼後,顯示仍為:
u'\ufeff\r\n\r\n\r\n \r\n
多次查詢後,發現問題在輸出的前幾個字元「'\ufeff」,去除這個字元後,顯示就正常了。
假定使用如下語句獲得輸出:
s=r.read()
在shell中使用「print s.decode("utf-8")[1:]」,輸出就正常了。
網上說明原因為:
某些軟體,在儲存乙個以utf-8編碼的檔案時,會在檔案開始的地方插入三個不可見的字元(0xef 0xbb 0xbf,即bom),轉碼後是「'\ufeff」,因此我們在讀取時需要自己去掉這些字元。
python 在windows 中文顯示
今天看到mechanize,在網上找例子實驗,發現只要 裡出現中文,就會報錯 python的預設編碼檔案是用的ascii碼 使用notepad 1 檔案編碼為 以utf 8無bom格式編碼 如果python檔案中使用了中文等非英語字元,就會報錯了 解決的方法 在python原始檔的第一行加上 cod...
python 在windows 中文顯示
今天看到mechanize,在網上找例子實驗,發現只要 裡出現中文,就會報錯 python的預設編碼檔案是用的ascii碼 使用notepad 1 檔案編碼為 以utf 8無bom格式編碼 如果python檔案中使用了中文等非英語字元,就會報錯了 解決的方法 在python原始檔的第一行加上 cod...
shell中按格式顯示日期
在shell程式設計中,將日期按照指定格式輸出是常見的任務。我們看一下乙個最常見的例子 now date y m d h m s n 對於初學者來講,要注意幾點 1 如果不指定格式,直接將date的結果賦給now,那麼格式為now date 一定要注意date上面的兩個符號,為鍵盤上面1左邊的那個符...