1. 程式人生 > >python3 'utf-8' codec can't decode byte 0xb3

python3 'utf-8' codec can't decode byte 0xb3

問題:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 109: invalid start byte

該問題發生於decode解碼;

編碼與解碼:

編碼就是將字串轉換成位元組碼,涉及到字串的內部表示。            解碼就是將位元組碼轉換為字串,將位元位顯示成字元。

decode()方法語法:

bytes.decode(encoding="utf-8", errors="strict")
  • encoding -- 要使用的編碼,如"UTF-8"。
  • errors -- 設定不同錯誤的處理方案。預設為 'strict',意為編碼錯誤引起一個UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通過 codecs.register_error() 註冊的任何值。

python3例項:

#!/usr/bin/python3

str = "菜鳥教程";

str_utf8 = str.encode("UTF-8")

str_gbk = str.encode("GBK")

print(str)

print("UTF-8 編碼:", str_utf8)

print("GBK 編碼:", str_gbk)

print("UTF-8 解碼:", str_utf8.decode('UTF-8','strict'))

print("GBK 解碼:", str_gbk.decode('GBK','strict'))

例項結果:

        菜鳥教程
        UTF-8 編碼: b'\xe8\x8f\x9c\xe9\xb8\x9f\xe6\x95\x99\xe7\xa8\x8b'
        GBK 編碼: b'\xb2\xcb\xc4\xf1\xbd\xcc\xb3\xcc'
        UTF-8 解碼: 菜鳥教程
        GBK 解碼: 菜鳥教程

文章初始丟擲的問題,可能是解碼時的type不正確:

我的具體實踐是:page = request.urlopen(req).read()

                             rencode = page.decode('utf-8')

丟擲上面的問題;

解決:將解碼type改為gbk,即rencode = page.decode('gbk'),問題得以解決。