对于unicode字符和该字符的表示之间的区别,我有点困惑。这两者之间有什么区别:
>>> u'é'
>>> u'\xe9'此外,我如何能够在“可读的”unicode (é)和机器unicode(\xe9 9)之间来回切换?我将如何做到以下几点?
>>> u='bj\\u00f6rk: voltaic'
>>> print u
bj\u00f6rk: voltaic发布于 2015-04-01 21:35:57
发布于 2015-04-02 09:37:19
repr()将只在python2上工作(这显然是您正在使用的)。这里有一个更完整的答案和一个建议:如果您要使用unicode,请使用3,如果可能的话,切换到python 3。当python 3的改进是它存在的主要原因之一时,没有很好的理由去理解python2如何处理文本编码。
两者之间有什么区别: u'é‘u'\xe9’9‘
这两种方法可以为python指定相同的字符串;这两个字符串的内容没有区别:
>>> u'é' == u'\xe9'
True就像值62的字节在ascii中是A (chr(62) == "A"), unicode characters have a (usually) 16-bit value that is conventionally written in hexadecimal. For a single-character, you could display this value in decimal withord()‘)一样(尽管这不是很有用)。
当您打印字符串时,python将尝试显示它。当您用repr()转换它时,python将显示字符本身或转义形式,这取决于它是否可以在文字字符串中使用。在python 3中,repr('é')只是'é',因为它可以以字符串形式出现。要将文本看作16位unicode编码点的序列,您应该这样做(在python 2或3中工作):
>>> text = u'e'
>>> print(text.encode("raw_unicode_escape"))
b'\xe9'下面是一个较长的示例(在python 3上):
>>> text = "neé"
>>> repr(text)
"'neé'"
>>> text.encode("raw_unicode_escape")
b'ne\xe9'
>>> text.encode("utf-8")
b'ne\xc3\xa9'注意,UTF-8将é编码为两个字节的序列.UTF-8只是一个编码,这个字符的编码点是U+00e9.
https://stackoverflow.com/questions/29401259
复制相似问题