在python中使用unicode

Ale*_*nov 2 python encode utf-8

我使用pymysql连接到mysql数据库,并在执行请求后得到以下字符串:\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0.

这应该是utf8中的5个字符,但是当我这样做时,print s.encode('utf-8')我得到了:??????????.字符串看起来像unicode字符的字节表示,python无法识别.

那么我该怎么做才能让python正确处理它们呢?

Mar*_*ers 5

您希望decode(不encode)从字节字符串中获取unicode字符串.

>>> s = '\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0'
>>> us = s.decode('utf-8')
>>> print us
?????
Run Code Online (Sandbox Code Playgroud)

请注意,您可能无法使用print它,因为它包含ASCII以外的字符.但是你应该能够在支持Unicode的调试器中看到它的价值.我在IDLE中运行了上面的内容.

更新

看来你实际拥有的是:

>>> s = u'\xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb0'
Run Code Online (Sandbox Code Playgroud)

这比较棘手,因为在调用之前首先必须将这些字节写入字节串decode.我不确定"最好"的方法是什么,但这有效:

>>> us = ''.join(chr(ord(c)) for c in s).decode('utf-8')
>>> print us
?????
Run Code Online (Sandbox Code Playgroud)

请注意,在将其作为字符串存储在数据库中之前,您当然应该对其进行解码.