• UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 46:illegal multibyte sequence


    一、 最近使用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!

  • 相关阅读:
    sql优化
    多字段in
    最大值对应的行数据
    spring boot admin
    git + idea 操作
    css 多行溢出显示省略号失效
    Android输入系统(7)——Linux input子系统代码分析与调试 Hello
    Java中的正则表达式 Hello
    mybatis 中文路径报错处理
    React 18 之 useTransition
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/7835434.html
Copyright © 2020-2023  润新知