首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unicode与Unicode表示

Unicode与Unicode表示
EN

Stack Overflow用户
提问于 2015-04-01 21:34:03
回答 2查看 118关注 0票数 2

对于unicode字符和该字符的表示之间的区别,我有点困惑。这两者之间有什么区别:

代码语言:javascript
复制
>>> u'é'
>>> u'\xe9'

此外,我如何能够在“可读的”unicode (é)和机器unicode(\xe9 9)之间来回切换?我将如何做到以下几点?

代码语言:javascript
复制
>>> u='bj\\u00f6rk: voltaic'
>>> print u
bj\u00f6rk: voltaic
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-01 21:35:57

你想要使用重现

代码语言:javascript
复制
print repr(u)

shell中的print u'é'提供str输出,shell中的u'é'显示repr输出。

应激

返回一个字符串,该字符串包含一个很好的可打印对象表示形式。对于字符串,这将返回字符串本身。与repr(object)不同的是,str(object)并不总是试图返回eval()可以接受的字符串;它的目标是返回可打印的字符串。如果没有给定参数,则返回空字符串'‘。

票数 2
EN

Stack Overflow用户

发布于 2015-04-02 09:37:19

repr()将只在python2上工作(这显然是您正在使用的)。这里有一个更完整的答案和一个建议:如果您要使用unicode,请使用3,如果可能的话,切换到python 3。当python 3的改进是它存在的主要原因之一时,没有很好的理由去理解python2如何处理文本编码。

两者之间有什么区别: u'é‘u'\xe9’9‘

这两种方法可以为python指定相同的字符串;这两个字符串的内容没有区别:

代码语言:javascript
复制
>>> 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中工作):

代码语言:javascript
复制
>>> text = u'e'
>>> print(text.encode("raw_unicode_escape"))
b'\xe9'

下面是一个较长的示例(在python 3上):

代码语言:javascript
复制
>>> 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.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29401259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档