根据网页所给的字符编码将其字节数据decode('gb2312')
用的是scrapy,从给出的url获取body
def parse(self, response):
body = response.body.decode('gb2312')
print(body)
学分:1.5 # body就是这样之类的,中间的冒号是中文的冒号
# 想弄成的效果就是['学分','1.5']
body = body.split(':') # 就这样使用中文的冒号符来分割,但是出错
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xa3 in position 0: invalid start byte
请问怎么解决?
再看看上面的錯誤,是
byte 0xa3
於是我在終端上試了幾次,結果發現冒號的gb2312 encode
所以應該是python拿預設的utf-8來decode gb2312的body, 所以我能想到的一個辦法就是修改預設編碼值,也就是第一行的聲明:
# -*- coding: gb2312 -*-
然後運行果然成功,請問還有沒有別的方法?
Python3
decode後,body應該是unicode編碼,使用下面的方式即可:
又是一個編碼的問題,可以參考:人機互動之字符編碼和 五分鐘戰勝 Python 字符編碼。