小编Woo*_*Cho的帖子

为什么空字符串 '' 在 utf-16 中编码为 2 个字节,而在 utf-8 或 ascii 中编码为 0 个字节?

我刚刚学习了 python 中的字符串编码,在稍微摆弄了一下之后,我对空字符串 ('') 的大小在 utf 8 和 ascii 中为 0 但在 utf 16 中为 2 感到困惑?怎么会?

print(len(''.encode('utf16'))) # is 2
print(len(''.encode('utf8'))) # is 0
Run Code Online (Sandbox Code Playgroud)

我想问题的很大一部分是我不明白 utf 16 是如何工作的。我不明白为什么用 utf 16 编码“垃圾邮件”会是 10 个字节长,而不是 8 个字节(每个字符 2 个字节(16 位))。我假设 utf 16 中需要 2 个字节作为任何字符串的默认填充或其他内容?

*编辑

我对 UTF 8 或 UTF 16 的工作原理以及存储每个单独字符的不同之处并不感到困惑。我很困惑如何将缺少任何字符(空字符串)存储在 UTF 16 中的 2 个字节中,但在 UTF 8 中存储为 0 字节。(而不是两者都存储为 1 字节或 0)

该链接没有提供我的问题的答案。

python utf-8 utf-16 utf python-3.x

2
推荐指数
1
解决办法
1978
查看次数

标签 统计

python ×1

python-3.x ×1

utf ×1

utf-16 ×1

utf-8 ×1