Python u';乔治Mé;李è;s';vs u';乔治M\xe9li\xe8s';

Python u';乔治Mé;李è;s';vs u';乔治M\xe9li\xe8s';,python,unicode,Python,Unicode,我已经读了十几页了,但还是不明白。 这些版本之间的区别在哪里: u'Georges Méliès'和u'Georges M\xe9li\xe8s' 如何将一个字符串转换为另一个字符串,反之亦然?解释器解析这些字符串后,这些字符串没有区别 一个版本简单地放置特殊字符,但它要求源文件具有特殊编码,如UTF-8。 第二个版本将这些字符替换为字节表示,因此在ASCII编码的文件中使用这些字符串是安全的 不能谈论它们之间的“转换”,因为它们本质上是相同的字符串。但这里有一些可能是有趣的 print u'G

我已经读了十几页了,但还是不明白。
这些版本之间的区别在哪里:

u'Georges Méliès'
u'Georges M\xe9li\xe8s'


如何将一个字符串转换为另一个字符串,反之亦然?

解释器解析这些字符串后,这些字符串没有区别

一个版本简单地放置特殊字符,但它要求源文件具有特殊编码,如UTF-8。
第二个版本将这些字符替换为字节表示,因此在ASCII编码的文件中使用这些字符串是安全的

不能谈论它们之间的“转换”,因为它们本质上是相同的字符串。但这里有一些可能是有趣的

print u'Georges M\xe9li\xe8s'
给出输出
Georges Méliès


print repr(u'Georges Méliès')
给出了
u'Georges M\xe9li\xe8s'

这是一样的,我想补充一下:


u'Georges Méliès'.encode('latin1')
给出了
'Georges M\xe9li\xe8s'

你不应该让人们阅读转义的Unicode文本。这是完全模糊和倒退的。只需直接使用UTF-8,并指定编码。其他任何东西都是一团糟。值得注意的是,从Python 3.x开始,
repr
表单不再默认为显式显示转义字符-它与
str
输出相同。在Python 3中,有
ascii
函数执行转义。呵呵。。还没有。。但我在玩电影信息,并试图将其保存为dict,就像我从tmdb进入一样:)嗯。。我刚刚发现我使用的DictionaryField已损坏,不允许我保存完全正确的unicode数据:/