在我的数据库中混合了一些错误的ascii代码,如何使这些字符串正确连接?
我的示例情况是这样的(某些ascii字符大于128):
>>> s=b'\xb0'
>>> addstr='read '+s
>>> print addstr
read ░
>>> addstr.encode('ascii','ignore')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 5: ordinal
not in range(128)
>>> addstr.encode('utf_8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 5: ordinal
not in range(128)
我可以:
>>> addstr.decode("windows-1252").encode('utf-8')
'read \xc2\xb0'
但您可以看到Windows-1252编码会改变我的性格。
我想将addstr转换为unicode吗?怎么做?
addstrUnicode = addstr.decode("unicode-escape")
您不必担心字符的变化,只是utf-8编码要求两个字节(而不是一个字节)用于0x80和0x7FF之间的字符,因此,当您编码为utf-8时,会增加一个字节(0xC2)添加。
这是一个有用的链接,可帮助您理解不同类型的编码。
此外,在开始尝试对字符进行解码之前,请确保您知道该字符的原始编码。当您提到它是“ ASCII代码”时,ASCII字符集最多可扩展到127,这意味着该字符无法进行ASCII编码。我假设这里只是Unicode点\ u00B0。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句