1. 程式人生 > >python 寫入檔案時,報錯:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 1806: ille

python 寫入檔案時,報錯:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 1806: ille

最近用到python 爬取智聯招聘上的網頁,想把頁面儲存本地:

def writeintofile(filename, str):
    # 開啟檔案
    fo = open(filename, 'w')      # 寫的方式開啟檔案
    print("檔名: ", fo.name)
    # 在檔案末尾寫入一行
    fo.write(str)

    # 關閉檔案
    fo.close()

報出錯誤:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position 1806: illegal multibyte sequence

原因如下:
1.‘gbk’ codec can’t encode character :說明是將Unicode字元編碼為GBK時候出現了問題,可能是本身Unicode型別的字元中,包含了一些無法轉換為GBK編碼的一些字元;

2.gbk無法轉換’\xa0’字元,所以在轉換前需要將“\xa0”替換掉;使用string.replace(u’\xa0’, u’ ‘);
因此,我們使用:

fo.write(str.replace(u'\xa0', u'')) 

即可解決問題;

另外一種解決辦法,在gbk解碼時忽略掉不能解碼的資料:

fo.write(content.encode("gbk", 'ignore').decode("gbk", "ignore"))

或者採用如下方式:

fo = open(filename, 'w', encoding="utf-8")  
fo.write(str)

三種解決方法都成功。