文本如何保存在内存中?
How is text saved in memory?
假设有一个utf8编码的文件:
file1.txt
汉字
哪个二进制表示是:
11100110 10110001 10001001 11100101 10101101 10010111
如果我用编辑器打开它,它将读取位序列并对其进行解码。我可以在编辑器中看到 汉字
,并且 汉字
将保存在内存中。
过去,现在
- 比特序列是什么?是不是和上面一样?
- 是否取决于平台?
- 各种编码文本的结果是否相同?
通常情况下,答案是“视情况而定”。
一般来说,内存中的文本必须像磁盘上的文本一样使用某种编码。
但是该编码是否与磁盘上的编码相同取决于应用程序。
有些人可能有一个首选编码,它们将在内存中表示文本(例如 UTF-16,如果他们觉得浪费的话,甚至是 UCS-4),而其他人可能会以与所用相同的编码将其保存在内存中在磁盘上并在 rendering/searching.
时根据需要解释它
不存在需要一种或另一种方法的通用规则。一些 languages/platforms 有强烈的偏好。
例如 Java 将 UTF-16 用于内存中的 String
对象(除了作为内部优化,如果文本允许,它有时可能会使用 Latin-1)。
假设有一个utf8编码的文件:
file1.txt
汉字
哪个二进制表示是:
11100110 10110001 10001001 11100101 10101101 10010111
如果我用编辑器打开它,它将读取位序列并对其进行解码。我可以在编辑器中看到 汉字
,并且 汉字
将保存在内存中。
过去,现在
- 比特序列是什么?是不是和上面一样?
- 是否取决于平台?
- 各种编码文本的结果是否相同?
通常情况下,答案是“视情况而定”。
一般来说,内存中的文本必须像磁盘上的文本一样使用某种编码。
但是该编码是否与磁盘上的编码相同取决于应用程序。
有些人可能有一个首选编码,它们将在内存中表示文本(例如 UTF-16,如果他们觉得浪费的话,甚至是 UCS-4),而其他人可能会以与所用相同的编码将其保存在内存中在磁盘上并在 rendering/searching.
时根据需要解释它不存在需要一种或另一种方法的通用规则。一些 languages/platforms 有强烈的偏好。
例如 Java 将 UTF-16 用于内存中的 String
对象(除了作为内部优化,如果文本允许,它有时可能会使用 Latin-1)。