Python第三方庫requests的編碼問題

PS:這個解決方法可能很簡單,但是這是平時的一些細節問題,所以有必要提醒一下!

首先代碼不多,就是通過get方法去獲取豆瓣首頁信息,如圖:但是會報UnicodeEncodeError: 'gbk' codec can't encode character '\u2122' in position 42358: illegal multibyte sequence錯誤

 其中,r.encoding是獲取響應頭Content-Type的charset值,有的網站沒有charset字段,就可能使用默認的 ISO-8859-1, 一般那些不規範的頁面往往有這樣的問題.,所以這種方法可能獲取編碼不準確。

那麼r.apparent_encoding就是獲取網站真實的編碼,apparent_encoding通過調用chardet.detect()來識別文本編碼。

  • 情況一:這可能是大家正常情況下最常遇到的問題,那就是沒有charset字段,或者編碼與charset字段的不符合。

解決方法:

  1. 如果沒有charset字段,可以通過r.apparent_encoding獲取真實的編碼,再使用r.encoding = ‘xxx’指定正確的編碼,這樣在調用text時就會根據指定的字符編碼進行轉換。
  2. 如果與charset的編碼不符合,直接用r.encoding = ‘xxx’指定charset的編碼就OK啦!

 

  • 情況二: 通過r.encoding或者r.apparent_encoding獲取的編碼都是一樣的,但是還是會報編碼錯誤,這種情況可能就要考慮下IDE的字符編碼設置問題了。

以PyCharm爲例按如下路徑:file→settings→Editor→File Encodings→Project Encoding進行設置,如圖:

 推薦看一下我以前的文章:Pycharm有必要改的幾個默認設置項


 自學交流羣:747509472


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章