繁体   English   中英

在Python中将UTF-8转换为字符串文字

[英]Convert UTF-8 to string literals in Python

我有一个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é

u''语法仅适用于字符串文字 ,例如在源代码中定义值。 使用语法会导致创建一个unicode对象,但这不是创建此类对象的唯一方法。

您不能通过在前面添加u来从字节字符串中创建unicode值。 但是,如果使用正确的编码调用str.decode() ,则会获得unicode值。 反之亦然,您可以使用unicode.encode() unicode对象编码为字节字符串。

请注意,在显示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。 其他感兴趣的文章是:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM