python - python 在计算机中如何存储字符串?

标签 python string encoding utf

我相信大多数熟悉 Python 的人都读过 Dive Into Python 3。在第 4.3 章中,它是这样说的:

In Python 3, all strings are sequences of Unicode characters. There is no such thing as a Python string encoded in UTF-8, or a Python string encoded as CP-1252. “Is this string UTF-8?” is an invalid question.

不知何故我明白了这是什么意思:strings = Unicode 集中的字符,Python 可以帮助你根据不同的编码方式对字符进行编码。但是,无论如何,Python 中的字符在计算机中都存储为字节吗?例如,s = 'strings',并且 s 肯定作为字节流 '0100100101...' 或其他任何形式存储在我的计算机中。那么这里使用的这种编码方式是什么——Python的“默认”编码方式?

谢谢!

最佳答案

Python 3 区分文本 和二进制数据。文本保证是 Unicode,但据我所知,没有指定特定的编码。所以它可能是 UTF-8、UTF-16 或 UTF-32¹——但您甚至不会注意到。

这里的要点是:你根本不应该关心。如果你想处理文本,然后使用文本字符串并通过代码点访问它们(这是单个 Unicode 字符的编号并且独立于内部 UTF - 它可以将代码点组织成几个更小的代码单元).如果你想要字节,那么使用 b"" 并按字节访问它们。如果你想要一个特定编码的字节序列中的字符串,你可以使用 .encode()


¹ 或者甚至是 UTF-9,如果有人疯狂到可以在 PDP-10 上实现 Python。

关于python - python 在计算机中如何存储字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715877/

相关文章:

python - 如何访问函数内部的函数?

python - 继续追加到列表中,直到达到字符数

尝试将字符串编码/解码为 UTF-8 后引发 Java 服务器线程空指针异常错误

python - 有没有办法在 Tensorflow 的另一个数据集中使用 tf.data.Dataset?

python - App Engine - 检查 Expando 类中是否存在属性

java - 如何删除字符串Java中所有出现的单词

multithreading - 在 SLURM 环境中运行 FFMPEG 多线程

php - 将 PHP 默认编码设置为 UTF-8

python - 在 Python 中为 JSON 转义双引号

c - 如何解析 glib 字符串 (gchar *) 中的整数?