【发布时间】:2017-02-22 17:44:02
【问题描述】:
我知道 Python 2.7 字节字符串只接受 ASCII 字符,我想知道为什么以下工作?看起来 ü 是用其他格式编码的,你能解释一下吗?
>>> s = "Flügel"
>>> s
'Fl\x81gel'
【问题讨论】:
-
不,Python 字节字符串采用 0-255 范围内的 任何字节(十六进制 0x00 到 0xFF),而不仅仅是 0-127 的 ASCII 范围(0x00-0x7F )。
-
Python 2.7 字节字符串采用字节序列——不仅仅是 ASCII 字符。字节可以具有来自
0x00->0xff的任意值。 -
当你输入
ü时,你的终端会发送字节0x81,所以这就是存储的内容。 -
如果我在命令行中将其粘贴到 2.7.13 中,我会得到一个带有
Fl\xc3\xbcgel的str,所以 Python 或我的终端正在转储为 Unicode?那是 ASCII 码? -
@NickT;您的终端配置为使用 UTF-8 进行通信,OP 使用的是拉丁语变体(可能是 CP1252 之类的 Windows 代码页)。不要将编码与 Unicode 混淆; UTF-8 是一种可以编码所有 Unicode 标准的编解码器,但 UTF-16 和 UTF-32 也可以。
标签: python string python-2.7 ascii