【转】UnicodeEncodeError: 'gbk' codec can't encode character ...[省略] illegal multibyte sequence

本文主要是介绍【转】UnicodeEncodeError: 'gbk' codec can't encode character ...[省略] illegal multibyte sequence,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:天宇之游 - 博客园:https://www.cnblogs.com/cwp-bg/p/7835434.html

【推荐】最后一种方法。

 

一、 最近使用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 ...[省略] illegal multibyte sequence的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805059

相关文章

php json_encode 大括号中括号

当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串。 而当array是不从0开始或者不连续的数组时,json_encode出来的结果是一个由{}括起来的key-value模式的字符串。 当字符串为[1,1,1] 这种模式时,json_decode默认解析出来的结果是一个数组。 当字符串为{"1":1,"2":1} 这种模式时,json_

CSS 超出长度省略

更多内容: http://blog.yuhai.win 参考地址:1、https://segmentfault.com/a/11900000062379772、http://www.css88.com/archives/52063、https://github.com/josephschmitt/Clamp.js案例代码:1、https://github.com/yuhaizr/htmlexam

ORA-12737: Instant Client Light: unsupported server character set CHS16GBK

当使用Navicat Premiun 英文版连接oracl时可能会报ORA-12737: Instant Client Light: unsupported server character set CHS16GBK错误 这是只要打开Navicat Premiun-->tools-->options 把OCI的地址指向oracle安装目录下的oci.dll即可,地址可能不完全相同,我的是在:F:

CSS文本溢出截断省略

文本溢出截断省略 文本溢出截断省略是比较常见的业务场景,主要分为单行文本溢出截断省略与多行文本溢出截断省略,单行的截断方案比较简单,多行截断相对比较复杂。 单行溢出省略 单行文本溢出截断省略直接使用CSS即可,其无兼容问题,文本溢出范围才显示省略号,否则不显示省略号,省略号位置显示刚好,但是只能作为单行文本溢出截断省略的解决方案。 <section><div class="t1">很长很长

优化C++ utf8,gbk,unicode编码间的转换函数

好久没写博客了,不是太忙,是太懒了。。。 最近都在重构公司项目上的代码,然后就发现有部分函数的运行方式可以优化。这些函数的运行的运行方式都是先new出一堆内存,使用,最后delete掉。我就想,可不可以通过静态局部变量来重复使用已经new了的动态内存,以达到优化代码的运行的目的?然后我就用visual studio 2017进行了测试,下面是我的测试代码: #include <random>

中文字符编码之GBK,UTF-16和UTF-8

编程中经常会遇到这三种字符编码形式的相互转换问题,以至于许多第三方的库不明原因的调用失败,其实很多都是由于第三方库支持的是utf-8而不是windows默认支持的utf-16导致的。 下面介绍一下windows系统下常见的这三种字符编码方式。 GB2312 是我们国家自己国标的汉字编码字符集,该字符集以一个16位的2进制数据单元表示一个汉字,所以能够将两个char型数据单元保存一个汉字。

论文浅读之Mamba: Linear-Time Sequence Modeling with Selective State Spaces

介绍 这篇论文提出了一种新型的"选择性状态空间模型"(Selective State Space Model, S6)来解决之前结构化状态空间模型(SSM)在离散且信息密集的数据(如文本)上效果较差的问题。 Mamba 在语言处理、基因组学和音频分析等领域的应用中表现出色。其创新的模型采用了线性时间序列建模架构,结合了选择性状态空间,能够在语言、音频和基因组学等不同模式中提供卓越的性能。这种突破

SyntaxError- Non-ASCII character '-xe8' in file

python编译报错: SyntaxError: Non-ASCII character ‘\xe8’ in file xxx原因是不支持中文注释,如这种中英文混杂注释: # Subtract off the mean and divide by the variance of the pixels.#减去平均值并除以像素的方差 解决办法: 在文件第一行加上 #encoding:utf

打开pl/sql developer出现NLS_LANG和字符集(Character set)问题

打开pl/sql developer出现NLS_LANG和字符集(Character  set)问题 公司最近培训pl/sql,我安装完毕后打开,遇到如图问题。 PS:我的操作系统是英文的。 这是因为系统没有设置NLS_LANG系统变量。有两种方式查看。 1. 查看电脑属性。 2. 命令行查看。 PS:这里我已经设置过了,所以仅仅

mysql实现sequence自增长

1、创建表tb_sequence,用来存放sequence值:   create table tb_sequence(name varchar(50) not null,current_value int not null,_increment int not null default 1, primary key(name));     2.现在插入一条记录  insert into t