2013-12-19 108 views
2

在python中是否有一个函数等同于用'u'作为字符串的前缀?python字符串编码问题

比方说,我有一个字符串:

a = 'C\xc3\xa9dric Roger' 

,我想将其转换为:

b = u'C\xc3\xa9dric Roger' 

,这样我可以把它比作其他Unicode对象。我怎样才能做到这一点?我的第一个直觉是尝试:

>>>> b = unicode(a) 
Traceback (most recent call last): 
File "<string>", line 1, in <fragment> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) 

但这似乎是试图解码字符串。没有进行任何类型的解码,是否有一个转换为unicode的函数? (那是什么 'U' 字头确实还是我误解?)

回答

7

你需要指定编码:

unicode(a, 'utf8') 

,或者使用str.decode()

a.decode('utf8') 

但做挑正确的编解码器为您的输入;你在这里显然有UTF-8数据,但并不总是如此。

要理解这是什么一样,我强烈推荐您阅读:

+0

对不起如果我在这里很愚蠢但unicode('C \ xc3 \ xa9dric Roger','utf8')不会产生u'C \ xc3 \ xa9dric Roger'... –

+0

@JohnGreenall:不,因为您现在有* Unicode *值; C3 A9是Unicode标准中的U + 00E9代码点的UTF-8编码,也就是拉丁文中带有ACUTE的小写字母E.当表示unicode字符串时,Python将显示为'u'\ xe9'。 –

+1

@JohnGreenall:再次,*请*阅读我的答案中包含的链接,这里有一些基本概念需要了解。 –