gpt4 book ai didi

python - 将非 ascii 字符分配给 python 内置字符串时,该值意味着什么?

转载 作者:行者123 更新时间:2023-12-01 03:24:45 26 4
gpt4 key购买 nike

我最近在研究一些与编码相关的东西,我对以下内容感到困惑:

看看我有没有

a = "哈"  ## whatever non-ascii char is fine
a[0] ## = "\xe5"
a[1] ## = "\x93"
a[2] ## = "\x88"

len(a) 将为 3,每个值将为“\xe5”、“\x93”和“\x88”

我明白如果我这样做:

a.decode("utf-8") ## = u"\u54c8"

它将成为一个unicode字符串,代码点将为“\u54c8”。问题是:python内置的字符串使用什么编码方式?为什么a[0] 不是“\x54”,a[1] 不是“\xc8”,这样它们加起来就是“54c8”?

我猜内置 python str 中的编码不应该是 utf-8,因为正确的 utf-8 代码点应该是“\u54c8”。是这样吗?

最佳答案

UTF-8 和 Unicode 不是一回事。 Unicode 是整数值到字符的抽象映射; UTF-8 是将这些整数表示为字节序列的一种特殊方式。 \xe5\x93\x88是整数0x54c8的三字节UTF-8编码,无法用单个字节表示。

Python 2 中的默认编码是 ISO-8859,但在 Python 3 中更改为 UTF-8。

关于python - 将非 ascii 字符分配给 python 内置字符串时,该值意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41498141/

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