1、 最近使用python寫入文件時,出現了以下的錯誤:python
可是content的內容是unicode編碼,不知道怎麼和gbk扯上了關係,對content使用encode()和decode(),用gbk,utf-8,gb2312各類編碼解碼都沒有效果;json
在網上查找資料,看到一篇文章關於這個的說法:http://blog.csdn.net/xiaoyi_zhang/article/details/51675099windows
結論是:編碼
1.‘gbk’ codec can’t encode character :說明是將Unicode字符編碼爲GBK時候出現了問題,多是自己Unicode類型的字符中,包含了一些沒法轉換爲GBK編碼的一些字符;spa
2. gbk沒法轉換'\xa0'字符,因此在轉換前須要將「\xa0」替換掉;使用string.replace(u'\xa0', u' ');.net
我在上述代碼中使用:code
self.file.write(content.replace(u'\xa0', u''))
結果有效,沒有報錯;blog
另一種方法,在gbk解碼時忽略掉不能解碼的數據:utf-8
self.file.write(content.encode("gbk", 'ignore').decode("gbk", "ignore"))
可是總以爲這種方法是在迴避問題,後來突發靈感,這是在文件寫入的時候報的錯誤,而萬惡的windows打開文件默認是以「gbk「編碼的,可能形成不識別unicode字符,因而作了以下的修改:unicode
self.file = open('biaobai.json', 'w', encoding="utf-8")
self.file.write(content)
結果OK!