python转码时出现‘illegal multibyte sequen‘错误

在Python中,可以对String调用decode和encode方法来实现转码。

比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作

s.decode(‘gbk‘).encode(‘utf-8′) 
可是,在实际开发中,我发现,这种办法经常会出现异常: 
UnicodeDecodeError: ‘gbk‘ codec can‘t decode bytes in position 30664-30665: illegal multibyte sequence 
这 是因为遇到了非法字符——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比如\xa3\xa0,或者\xa4\x57,这些 字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。 
这样的问题很让人头疼,因为只要字符串中出现了一个非法字符,整个字符串——有时候,就是整篇文章——就都无法转码。

解决办法: 
s.decode(‘gbk‘, ‘ignore‘).encode(‘utf-8′) 
因为decode的函数原型是decode([encoding], [errors=‘strict‘]),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常; 
如果设置为ignore,则会忽略非法字符; 
如果设置为replace,则会用?取代非法字符; 
如果设置为xmlcharrefreplace,则使用XML的字符引用。

python文档

decode( [encoding[, errors]]) 
Decodes the string using the codec registered for encoding. encoding defaults to the default string encoding. errors may be given to set a different error handling scheme. The default is ‘strict‘, meaning that encoding errors raise UnicodeError. Other possible values are ‘ignore‘, ‘replace‘ and any other name registered via codecs.register_error, see section 4.8.1.

时间: 2024-08-26 00:42:03

python转码时出现‘illegal multibyte sequen‘错误的相关文章

python打开文件查询字符串时报UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 19: illegal multibyte sequence错误

当这样打开时报错了 lines = open(path).readlines() open(path).close() for line in lines: idx1 = line.find('检测到的 SN 为:') idx1 += len('检测到的 SN 为:') idx2 = line.find(' 或许与您申请的SN不符,请联系技术提供方',idx1) responsetimestr = line[idx1:idx2] rts = responsetimestr   UnicodeDe

解决“UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 24051: illegal multibyte sequence”错误

今天我在爬取一个网页时出现了下面这个错误: UnicodeEncodeError: 'gbk' codec can't encode character u'\xa9' in position 24051: illegal multibyte sequence 从这个错误来看应该是编码时出错了,于是我在网上查了些资料,找到了解决方法: source_code.encode('GB18030') 解释:GB18030是GBK的父集,所以能兼容GBK不能编码的字符. 解决"UnicodeEncode

day1 UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 2490: illegal multibyte sequence 错误提示

get方式得到网页的信息 #coding=utf-8 #pip install requests #直接get到网页的信息 import requests from bs4 import BeautifulSoup response = requests.get('https://www.sogou.com/web?query=搞基建') print(response.text) #打印搜索出来的全部信息 #从 response.text 找出 <div class = 'wrwrap> &l

python使用pip时出现一大堆红色错误,然后最后一句是Read timed out

出现这个问题是因为资源的访问速度太慢了,导致pip超时! 解决办法: 1.修改pip超时时间(治标不治本) 2.翻q 3.修改pip国内镜像,方法参考https://blog.csdn.net/xuezhangjun0121/article/details/81664260 原文地址:https://www.cnblogs.com/isyefeng/p/12392936.html

python 读取文件时报错UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0x80 in position 205: illegal multibyte sequence

python读写txt文件转化成excel文件 python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multibyte sequence" 解决办法1. FILE_OBJECT= open('order.log','r', encoding='UTF-8') 解决办法2. FILE_OBJECT= open('order.log','rb') pyth

python 读取文件时报错: UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xa4 in position 127: illegal multibyte sequence

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence python读取文件时提示UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence 解决办法: FILE_OBJECT= open('order.log','r'

启动运行python3时 UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xa2 in position 170: illegal multibyte sequence

重现 在cmd中输入Python,运行后,出现以下错误: Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. Failed calling

python 读取中文CSV &#39;gbk&#39; codec can&#39;t decode bytes in position 2-3:illegal multibyte sequence

读取中文的文档如Excel,CSV文件,需要中文编码 如gbk 解码才能转Unicode:然而 数据混合类型,读CSV文件就会出错,经管Excel正常. UnicodeDecodeError :'gbk' codec can't decode bytes in position 2-3:illegal multibyte sequence意思是:将一个字符串,通过gbk的方式,去解码,想要获得Unicode字符串,结果出错了 解决方法:处理的字符的确是gb2312,但是其中夹杂的部分特殊字符,是

Python文件读取报错 UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xaf in position 9: illegal multibyte sequence

源代码: fo = open("***.csv","r") 报错: 解决方案: fo = open("***.csv","r",encoding='UTF-8') Python文件读取报错 UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 9: illegal multibyte sequence 原文地址:https://www.cnblog