我有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
),但这就是我得到的。
答案 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中的文本意味着什么是有用的。