python字符串编码问题

Joh*_*all 2 python string unicode encode

python中是否有一个函数相当于用'u'为字符串添加前缀?

假设我有一个字符串:

a = 'C\xc3\xa9dric Roger'
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

b = u'C\xc3\xa9dric Roger'
Run Code Online (Sandbox Code Playgroud)

这样我就可以将它与其他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)
Run Code Online (Sandbox Code Playgroud)

但这似乎是试图解码字符串.是否有一个函数可以在不进行任何解码的情况下转换为unicode?(这是'u'前缀的作用或我误解了吗?)

Mar*_*ers 7

您需要指定编码:

unicode(a, 'utf8')
Run Code Online (Sandbox Code Playgroud)

或者,使用str.decode():

a.decode('utf8')
Run Code Online (Sandbox Code Playgroud)

但请为您的输入选择正确的编解码器; 你在这里明显有UTF-8数据,但情况可能并非总是如此.

为了理解这一点,我建议您阅读:

  • 如果你真的*想要得到'u'C\xc3\xa9dric Roger',那么编码将是`iso-8859-1`,但正如Martijn所说,这似乎不太可能是正确的,除非这个人的名字真的如此是Cédric(我很高兴我不称之为). (3认同)