根据我的阅读(包括这篇文章),默认情况下 Python 使用 UTF-8 进行编码。字符串在假定它们以 UTF-8 编码的情况下进行读取(更多来源)。
然后,使用 Latin-1、UCS-2 或 UCS-4 对整个字符串进行转换为普通 Unicode,具体取决于它遇到的 UTF-8 的最高代码点。这似乎与我在终端上所做的相匹配。字符 Ǧ 具有 Unicode 代码点 486,只能适应 UCS-2。
我有两个问题。 首先,当在终端打印时,字符串是如何编码和解码的?如果我们调用print(),那么字符串是否首先被编码为UTF-8(从UCS-2或Latin-1转换),然后系统解码它以打印到屏幕上? 其次,字符串大小的初始增量是什么意思?为什么用Latin-1表示的字符串具有49的初始大小,而使用UCS-2表示的字符串具有74的初始大小?
谢谢!
然后,使用 Latin-1、UCS-2 或 UCS-4 对整个字符串进行转换为普通 Unicode,具体取决于它遇到的 UTF-8 的最高代码点。这似乎与我在终端上所做的相匹配。字符 Ǧ 具有 Unicode 代码点 486,只能适应 UCS-2。
string1 = "Ǧ"
sys.getsizeof(string1) # This prints 76
string1 = "Ǧa"
sys.getsizeof(string1) # This prints 78, as if 'a' takes two bytes
string2 = "a"
sys.getsizeof(string2) # This prints 50
string2 = "aa"
sys.getsizeof(string2) # This prints 51, as if 'a' takes one byte
我有两个问题。 首先,当在终端打印时,字符串是如何编码和解码的?如果我们调用print(),那么字符串是否首先被编码为UTF-8(从UCS-2或Latin-1转换),然后系统解码它以打印到屏幕上? 其次,字符串大小的初始增量是什么意思?为什么用Latin-1表示的字符串具有49的初始大小,而使用UCS-2表示的字符串具有74的初始大小?
谢谢!