gpt4 book ai didi

python - str.encode()提供意外结果

转载 作者:行者123 更新时间:2023-12-03 16:09:29 26 4
gpt4 key购买 nike

我一直在玩python内置函数,并得到了一些令人困惑的结果(对我而言)。
看一下这段代码:

>>> 'ü'.encode()
b'\xc3\xbc'
为什么返回 \xc3\xbc(十进制的195和188)?如果您查看 ascii table,我们会看到 ü是第129个字符。或者,如果您看一下 here,我们会看到 ü是252'nd Unicode字符,这是您从中得到的
>>> ord('ü')
252
那么 \xc3\xbc是从哪里来的,为什么将它分成两个字节呢?解码时: b'\xc3\xbc'.decode(),怎么知道这两个字节是一个字符?

最佳答案

在您要查看的表上,您正在查看标题为“扩展的ASCII”的部分,该部分在ISO/IEC 8859或latin1中更常见。 ASCII作为字符集,定义了从0到127的7位字符。latin1定义了其他128个单字节字符,并且是ASCII的扩展。 Python使用UTF-8,它扩展了ASCII(因此与ASCII兼容)但与latin1不兼容。
字符ü具有Unicode代码点0xFC(十进制252),并且在使用UTF-8时使用两个字符进行编码。
许多在线ASCII表弄错了这一点。将代码点称为128个字符(最多255个ASCII字符)是不准确的,因为ASCII并不要求为这些代码点分配任何值。

关于python - str.encode()提供意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67249063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com