我有一个UTF-8格式的字符串,但不太确定如何将此字符串转换为相应的字符文字。例如,我有字符串:
我的字符串是:'Entre\xc3\xa9'
示例一:
此代码:
u'Entre\xc3\xa9'.encode('latin-1').decode('utf-8')
返回结果:u'Entre\xe9'
如果我继续打印这个:
print u'Entre\xe9'
我得到了结果:Entreé
这很棒,接近我的需要。问题是,我无法制作“Entre \ xc3 \ xa9'变量并将其传递给步骤,因为现在它已经破坏了。有任何提示让这个工作吗?
示例:
a = 'Entre\xc3\xa9'
b = 'u'+ a.encode('latin-1').decode('utf-8')
c= 'u'+ b
我想结果" c"是:
Entreé
答案 0 :(得分:8)
u''
语法仅适用于字符串文字,例如在源代码中定义值。使用语法会导致创建unicode
对象,但这不是创建此类对象的唯一方法。
您不能通过在其前面添加unicode
来从字节字符串中创建u
值。但是,如果您使用正确的编码调用str.decode()
,则会获得unicode
值。反之亦然,您可以将 unicode
个对象编码为unicode.encode()
的字节字符串。
请注意,在显示unicode
对象时,Python 再次使用Unicode字符串文字语法(因此u'...'
)表示,以简化调试。您可以将表示粘贴回Python解释器并获取具有相同值的对象。
您的a
值是使用字节字符串文字定义的,因此您只需要解码:
a = 'Entre\xc3\xa9'
b = a.decode('utf8')
您的第一个示例创建了一个Mojibake,一个包含Latin-1代码点的Unicode字符串,实际上代表UTF-8字节。这就是为什么你必须首先编码为Latin-1(撤消Mojibake),然后从UTF-8解码。
您可能希望在Unicode HOWTO中阅读Python和Unicode。其他感兴趣的文章是: