Python无法将错误的unicode编码为ascii

2024-05-17 13:09:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些Python代码正在接收一个包含错误unicode的字符串。当我试图忽略这些不好的字符时,Python仍然会窒息(2.6.1版)。以下是如何复制它:

s = 'ad\xc2-ven\xc2-ture'
s.encode('utf8', 'ignore')

它抛出

^{pr2}$

我做错什么了?在


Tags: 字符串代码错误unicodeutf8字符adencode
2条回答

你混淆了“unicode”和“utf-8”。您的字符串s不是unicode;它是特定编码中的bytestring(但不是UTF-8,更可能是iso-8859-1或类似的)从bytestring到unicode是通过解码数据完成的,而不是编码。从unicode到bytestring是编码。也许你想让s成为一个unicode字符串:

>>> s = u'ad\xc2-ven\xc2-ture'
>>> s.encode('utf8', 'ignore')
'ad\xc3\x82-ven\xc3\x82-ture'

或者,您可能希望将bytestring视为UTF-8,但忽略无效序列,在这种情况下,您将使用“ignore”作为错误处理程序对bytestring进行解码:

^{pr2}$

在Python 2.x中,将字符串转换为unicode实例是str.decode()

 >>> s.decode("ascii", "ignore")
 u'ad-ven-ture'

相关问题 更多 >