0

在我的数据库中混合了一些错误的 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?怎么做?

4

1 回答 1

0
addstrUnicode = addstr.decode("unicode-escape")

你不应该关心字符的变化,只是utf-8编码需要两个字节,而不是一个字节,对于0x80和0x7FF之间的字符,所以当你编码为utf-8时,一个额外的字节(0xC2)是添加。

是一个有用的阅读链接,有助于理解不同类型的编码。

此外,在开始尝试解码之前,请确保您知道字符的原始编码。虽然您提到它是“ascii 代码”,但 ascii 字符集最多只能扩展到 127,这意味着该字符不能进行 ascii 编码。我假设这里只是 Unicode 点 \u00B0。

于 2014-02-07T06:15:53.863 回答