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

2024-06-28 14:39:08 发布

您现在位置: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é

Tags: 字符串代码文本示例格式字符utfencode
1条回答
网友
1楼 · 发布于 2024-06-28 14:39:08

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

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

注意,当显示一个unicode对象时,Python通过再次使用Unicode字符串文本语法(所以u'...')来表示它,以便于调试。您可以将表示粘贴回Python解释器中,并获得具有相同值的对象。

您的a值是使用字节字符串文字定义的,因此您只需要解码:

a = 'Entre\xc3\xa9'
b = a.decode('utf8')

您的第一个示例创建了一个Mojibake,一个Unicode字符串,其中包含实际表示UTF-8字节的拉丁语-1代码点。这就是为什么你必须先编码成拉丁语-1(撤销Mojibake),然后从UTF-8解码。

您可能需要阅读Unicode HOWTO中的Python和Unicode。其他相关物品包括:

相关问题 更多 >