该
u''语法 仅适用于字符串文字 ,例如,在源代码中定义值。使用语法
unipre可以创建对象,但这不是创建此类对象的唯一方法。
您不能通过
unipre在字节字符串
u前面添加来产生值。但是,如果您
str.depre()使用正确的编码进行调用,则会获得一个
unipre值。反之亦然,您可以使用将对象
编码
unipre为字节字符串
unipre.enpre()。
请注意,在显示
unipre对象时,Python再次使用Unipre字符串文字语法(so )来 表示
它
u'...',以简化调试。您可以将表示形式粘贴回Python解释器中,并获得具有相同值的对象。
您的
a值是使用字节字符串文字定义的,因此您只需要解码:
a = 'Entrexc3xa9'b = a.depre('utf8')您的第一个示例创建了Mojibake,这是一个Unipre字符串,其中包含实际上代表UTF-8字节的Latin-1代码点。这就是为什么您必须先编码为Latin-1(以撤消Mojibake),然后再从UTF-8进行解码的原因。
您可能想在Unipre
HOWTO中阅读有关Python和Unipre的内容。其他感兴趣的文章是:
每个软件开发人员绝对,肯定必须绝对了解Unipre和字符集(无借口!)作者:Joel Spolsky
Ned Batchelder的实用Unipre



