当前位置: 首页 > 面试题库 >

Python-UnicodeDecodeError,无效的继续字节

丌官瀚
2023-03-14
问题内容

为什么以下项目失败?为什么使用“ latin-1”编解码器成功?

o = "a test of \xe9 char" #I want this to remain a string as this is what I am receiving
v = o.decode("utf-8")

结果是:

 Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
 File "C:\Python27\lib\encodings\utf_8.py",
 line 16, in decode
     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:
 'utf8' codec can't decode byte 0xe9 in position 10: invalid continuation byte

问题答案:

在二进制文件中,0xE9看起来像1110 1001。如果你在Wikipedia上读到有关UTF-8的信息,你会看到,这样的字节必须后面跟两个格式10xx xxxx。因此,例如:

>>> b'\xe9\x80\x80'.decode('utf-8')
u'\u9000'

但这仅仅是例外的机械原因。在这种情况下,你几乎可以肯定用拉丁文1编码了一个字符串。你可以看到UTF-8和拉丁文1看起来如何不同:

>>> u'\xe9'.encode('utf-8')
b'\xc3\xa9'
>>> u'\xe9'.encode('latin-1')
b'\xe9'

(请注意,我在这里混合使用了Python 2和3表示形式。输入在任何版本的Python中均有效,但是你的Python解释器不太可能以这种方式同时显示unicode和字节字符串。)



 类似资料:
  • 我真的是从python开始的,但我在这行工作了好几个小时,如果不解决它,我哪儿都去不了。 UnicodeDecodeError:'utf-8'编解码器无法解码位置49的字节0xc9:无效的延续字节 再次: UnicodeDecodeError:“utf-8”编解码器无法解码位置388中的字节0xc9:无效的连续字节

  • 我正在尝试创建一个程序,向用户询问指数,然后获取指数并执行操作(e^exponent)。如果用户输入的值不是双精度值,程序会打印“无效输入”,并继续请求指数。但是,我无法让这段代码工作,当我在调试器中键入非双精度值时,它会无限打印“输入指数:无效输入”。

  • 问题内容: 我正在使用Python-2.6 CGI脚本,但是在执行服务器日志时发现此错误, 这里 函数返回。 张贴这个问题之前我已经提到这个问题,操作系统,所以的。 更新 下一行损害了JSON编码器, 我有一个临时解决方案 但是我不确定这样做是否正确。 问题答案: 该错误是因为字典中存在一些非ASCII字符,并且无法对其进行编码/解码。避免此错误的一种简单方法是使用encode()如下函数对此类字

  • 问题内容: 从我的代码中,我希望我的卧室类继承超类-房间的长度和宽度。我已在评论的相应行中填充了错误。我遇到错误,找不到出路。请帮帮我? 问题答案: 您的BedRoom类具有 伪构造函数, 而不是真正的构造函数。构造函数不返回任何内容,也不返回空值。摆脱该无效声明。 更改 至

  • 我有下面的代码,将检查,看看用户是否在数据库中可用之前,他被授予访问该网站,但是当用户输入任何值,它将登录他,即使他没有在数据库中注册。在这段代码之后是JQuery代码,我也用它来防止任何值被输入到数据库中,如果字段是空的,并且它不是默认的文本字段值它继续登录过程,而不是阻止我在填写所需字段之前做任何事情。 下一行是JQuery代码。

  • 尝试安装 pip安装OSMnx 出错 异常:Traceback(最近一次调用最后一次):文件"C:\用户\liuzi\AppData\本地\程序\Python\Python36-32\lib\site-包\pip\compat__init__. py",第73行,console_to_str返回s.decode(sys.stdout.encoding)UnicodeDecodeError:'utf