python 在Shell中顯示中文亂碼解決

2021-06-09 03:22:01 字數 824 閱讀 9369

在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左邊的那個符...