Python:不需要的unicode类型

时间:2016-05-13 01:57:40

标签: python unicode

我有unicode字符串(来自API查询)应该已经编码为常规的ascii字符串(因为它们已经包含unicode表示)。如何在不实际更改正在编码的字符的情况下更改编码?

即便:

string = '165\xc2\xba F' # What I want
print(string)

my_string = u'165\xc2\xba F' # What I have
print(my_string)

PS我知道\xc2\xba实际上是序数,而不是度数符号(\xc2\xb0),但这就是我得到的。

1 个答案:

答案 0 :(得分:2)

你所拥有的不是“unicode”是你想要的字符串的UTF-8编码的字节序列。

您可以使用“latin-1”编解码器检索文本,以便将字节序列透明地传输到字节字符串(来自您的unicode-string)和 它们,通常从UTF-8解码:

In[]: u'165\xc2\xba F'.encode("latin1").decode("utf-8")
Out[]: u'165º F'

为什么latin-1编解码器是特殊的并且在这种情况下工作在第二段中描述:https://docs.python.org/3/library/codecs.html#encodings-and-unicode

当你有几分钟的时间时,阅读this nice article on Unicode以了解什么是编解码器以及unicode中的文本意味着什么是有用的。