繁体   English   中英

UnicodeDecodeError:'ascii'编解码器无法解码字节0xa3

[英]UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3

我得到了这个字符串'Velcro Back Rest \\xa36.99' 注意它在前面没有u 它只是简单的ascii。

如何将其转换为unicode?

我试过这个,

>>> unicode('Velcro Back Rest \xa36.99')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 17: ordinal not in range(128)

这个答案很好地解释了。 但我和那个问题的OP有同样的问题。 在评论的答案中,温斯顿说:“你不应该编码一个字符串对象...”

但我正在工作的框架要求它应该转换为unicode字符串。 我使用scrapy而且我有这条线。

loader.add_value('name', product_name)

这里product_name包含有问题的字符串,它会抛出错误。

您需要指定一个编码来将字节解码为Unicode:

>>> 'Velcro Back Rest \xa36.99'.decode('latin1')
u'Velcro Back Rest \xa36.99'
>>> print 'Velcro Back Rest \xa36.99'.decode('latin1')
Velcro Back Rest £6.99

在这种情况下,我能够从经验中猜测编码,您需要为遇到的每个编码提供正确的编解码器。 对于Web数据,通常包含在content-type标头的from中:

Content-Type: text/html; charset=iso-8859-1

例如, iso-8859-1是Latin 1编码的官方标准名称。 Python将latin1识别为iso-8859-1的别名。

请注意,您的输入数据不是纯ASCII。 如果是,它只使用0到127范围内的字节; \\xa3是十六进制的163,因此在ASCII范围之外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM