python中是否有一个函数相当于用'u'为字符串添加前缀?
假设我有一个字符串:
a = 'C\xc3\xa9dric Roger'
我想将其转换为:
b = u'C\xc3\xa9dric Roger'
这样我就可以将它与其他unicode对象进行比较.我怎样才能做到这一点?我的第一直觉是尝试:
>>>> b = unicode(a) Traceback (most recent call last): File "", line 1, in UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
但这似乎是试图解码字符串.是否有一个函数可以在不进行任何解码的情况下转换为unicode?(这是'u'前缀的作用或我误解了吗?)
您需要指定编码:
unicode(a, 'utf8')
或者,使用str.decode()
:
a.decode('utf8')
但请为您的输入选择正确的编解码器; 你在这里明显有UTF-8数据,但情况可能并非总是如此.
为了理解这一点,我建议您阅读:
绝对最低每个软件开发人员绝对必须知道关于Unicode和字符集(没有任何借口!)作者:Joel Spolsky
在Python的Unicode指南
Ned Batchelder的实用Unicode