Python 2.7字节字符串中的非ASCII字符

时间:2017-02-22 17:44:03

标签: python string python-2.7 ascii

据我所知,Python 2.7字节字符串只占用ASCII字符,我想知道为什么以下有效?看起来ü以其他格式编码,你能解释一下吗?

>>> s = "Flügel"
>>> s
'Fl\x81gel'

1 个答案:

答案 0 :(得分:2)

  

据我所知,Python 2.7字节字符串只采用ASCII字符,

你误解了。 Python字节字符串采用任何有效字节。字节基本上是0到255范围内的整数值(ASCII覆盖0到127)。

当您在终端或控制台中打开交互式解释器提示时,该终端或控制台的配置将确定您可以键入哪些字节并将其发送到Python。您似乎正在使用发送拉丁文字的文本(0x81发送ü sys.stdin.encoding)。 Python将其存储在bytestring。

您可以通过查看>>> import sys >>> sys.stdin.encoding 'UTF-8' >>> s = 'Flügel' >>> s 'Fl\xc3\xbcgel' 来查看使用的编解码器。

我的配置为处理UTF-8,它使用两个字节来编码相同的字符(number of variants):

img.create(width, height, sf::Color::Black);
相关问题