我如何将其转换为unicode

时间:2016-08-18 12:34:37

标签: python python-2.7

我有一个字符串:

u'\xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbe \xd0\xbf\xd0\xb0\xd0\xbb\xd0\xb5\xd1\x86 \xd0\xb2\xd0\xb2\xd0\xb5\xd1\x80\xd1\x85'

它包含сyrillic文本。我如何将它在Python 2.7.x上转换为带有сyrillic符号的unicode字符串,例如

u'видео палец вверх'

2 个答案:

答案 0 :(得分:3)

使用draw()编码进行编码:

latin1

答案 1 :(得分:1)

原始字符串上的u前缀似乎有误。看起来字符是utf-8编码的,所以这应该是一个简单的(字节)字符串:

# no u'' prefix:
s = '\xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbe \xd0\xbf\xd0\xb0\xd0\xbb\xd0\xb5\xd1\x86 \xd0\xb2\xd0\xb2\xd0\xb5\xd1\x80\xd1\x85'
# string is utf-8, decode it to unicode
u = s.decode('utf-8')
# this only works when your terminal charset is properly set up
print u
>>>> видео палец вверх

如果从其他地方获得该字符串,则其字符串类型错误。在这种情况下,您可以按照Serge Ballesta和Kasramvd的建议,通过使用latin1编码对其进行编码强制将其强制转换为字节字符串:

s = u'\xd0\xb2\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbe \xd0\xbf\xd0\xb0\xd0\xbb\xd0\xb5\xd1\x86 \xd0\xb2\xd0\xb2\xd0\xb5\xd1\x80\xd1\x85'
# force encode with latin 1 and then properly decode it using utf-8
u = s.encode('latin1').decode('utf-8')
print u
>>>> видео палец вверх