栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

UnicodeDecodeError:'ascii'编解码器无法解码位置47的字节0x92:序数不在范围内(128)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UnicodeDecodeError:'ascii'编解码器无法解码位置47的字节0x92:序数不在范围内(128)

问题是您正在调用

enpre
一个
str
对象。

A

str
是一个字节字符串,通常表示以类似UTF-8的方式编码的文本。当您调用
enpre
它时,首先必须将其解码回文本,以便可以对文本进行重新编码。默认情况下,Python通过调用进行操作
s.depre(sys.getgetdefaultencoding())
getdefaultencoding()
通常返回
'ascii'

因此,您正在说的是UTF-8编码文本,就好像是ASCII一样对其进行解码,然后在UTF-8中对其进行重新编码。

一般的解决方案是

depre
使用正确的编码显式调用,而不是让Python使用默认值,然后
enpre
使用结果。

但是,当正确的编码已经是您想要的编码时,更简单的解决方案是跳过,

.depre('utf-8').enpre('utf-8')
而将UTF-8
str
用作
str
已经存在的UTF-8

或者,如果你的MySQL包装有一个功能,让你指定的编码,并取回

unipre
CHAR
/
VARCHAR
/
TEXT
列,而不是
str
值(例如,在MySQLdb的,你传递
use_unipre=True
connect
呼叫,或者
charset='UTF-8'
如果你的数据库是太旧,自动-
检测到),只需执行此操作即可。然后,您将拥有
unipre
对象,然后可以调用
.enpre('utf-8')
它们。

通常,处理Unipre问题的最好方法是最后一个-
尽早解码所有内容,以Unipre进行所有处理,然后再进行尽可能晚的编码。但是无论哪种方式,您都必须保持一致。不要呼吁

str
可能是
unipre
;
不要将
str
文字连接到a
unipre
或将其传递给其
replace
方法;等等。无论何时您进行混搭,Python都将使用默认编码为您隐式转换,这几乎是您想要的。

附带说明,这是Python 3.x的Unipre更改可帮助的众多功能之一。首先,

str
现在是Unipre文本,而不是编码的字节。更重要的是,如果您
已对 字节 进行了
编码(例如,在
bytes
对象中),则调用
enpre
将为您提供一个
AttributeError
替代,而不是尝试进行静默解码,以便它可以重新编码。而且,类似地,尝试混合并匹配Unipre和字节将为您提供一个明显的
TypeError
,而不是在某些情况下成功进行的隐式转换,并给出有关您在其他情况下不要求的编码或解码的隐秘信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号