UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 46:ill(

Posted 天宇之游

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 46:ill(相关的知识,希望对你有一定的参考价值。

一、 最近使用python写入文件时,出现了如下的错误:

但是content的内容是unicode编码,不知道怎么和gbk扯上了关系,对content使用encode()和decode(),用gbk,utf-8,gb2312各种编码解码都没有效果;

在网上查找资料,看到一篇文章关于这个的说法:http://blog.csdn.net/xiaoyi_zhang/article/details/51675099

结论是:

1.‘gbk’ codec can’t encode character :说明是将Unicode字符编码为GBK时候出现了问题,可能是本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符;

2. gbk无法转换\'\\xa0\'字符,所以在转换前需要将“\\xa0”替换掉;使用string.replace(u\'\\xa0\', u\' \');

我在上述代码中使用:

self.file.write(content.replace(u\'\\xa0\', u\'\'))

 结果有效,没有报错;

另外一种方法,在gbk解码时忽略掉不能解码的数据:

 

self.file.write(content.encode("gbk", \'ignore\').decode("gbk", "ignore"))

但是总觉得这种方法是在回避问题,后来突发灵感,这是在文件写入的时候报的错误,而万恶的windows打开文件默认是以“gbk“编码的,可能造成不识别unicode字符,于是做了如下的修改:

self.file = open(\'biaobai.json\', \'w\', encoding="utf-8")
self.file.write(content)

结果OK!

 

以上是关于UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 46:ill(的主要内容,如果未能解决你的问题,请参考以下文章

UnicodeEncodeError: 'ascii' codec can't encode character u'u5929' in position 2(

UnicodeEncodeError: 'ascii' codec can't encode characters

UnicodeEncodeError: 'ascii' codec can't encode characters in

UnicodeEncodeError: 'gbk' codec can't encode character 'xbb' in position

UnicodeEncodeError: 'ascii' codec can't encode character...的解决方法

UnicodeEncodeError: 'gbk' codec can't encode character 'u25aa' in position 15: (