2024-05-17 13:09:00 发布
网友
我有一些Python代码正在接收一个包含错误unicode的字符串。当我试图忽略这些不好的字符时,Python仍然会窒息(2.6.1版)。以下是如何复制它:
s = 'ad\xc2-ven\xc2-ture' s.encode('utf8', 'ignore')
它抛出
我做错什么了?在
你混淆了“unicode”和“utf-8”。您的字符串s不是unicode;它是特定编码中的bytestring(但不是UTF-8,更可能是iso-8859-1或类似的)从bytestring到unicode是通过解码数据完成的,而不是编码。从unicode到bytestring是编码。也许你想让s成为一个unicode字符串:
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进行解码:
在Python 2.x中,将字符串转换为unicode实例是str.decode():
str.decode()
>>> s.decode("ascii", "ignore") u'ad-ven-ture'
你混淆了“unicode”和“utf-8”。您的字符串
s
不是unicode;它是特定编码中的bytestring(但不是UTF-8,更可能是iso-8859-1或类似的)从bytestring到unicode
是通过解码数据完成的,而不是编码。从unicode到bytestring是编码。也许你想让s
成为一个unicode字符串:或者,您可能希望将bytestring视为UTF-8,但忽略无效序列,在这种情况下,您将使用“ignore”作为错误处理程序对bytestring进行解码:
^{pr2}$在Python 2.x中,将字符串转换为unicode实例是
str.decode()
:相关问题 更多 >
编程相关推荐