分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

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

发布时间:2023-09-06 01:25责任编辑:董明明关键词:暂无标签

 最近使用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‘‘))

 结果有效,没有报错;

但是总觉得这种方法是在回避问题,后来突发灵感,这是在文件写入的时候报的错误,而万恶的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:illegal multibyte sequence

原文地址:http://www.cnblogs.com/cwp-bg/p/7835434.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved