需要通过UTF等对Unicode字符进行编码吗?为什么可以';我们不能简单地将它们存储为二进制代码点吗?
Unicode只需为每个字符分配一个整数。UTF-8或其他用于将这些整数(“代码点”)编码为存储在内存中的字节序列。我的问题是,为什么我们不能简单地将字符存储为其Unicode值的二进制表示形式(“代码点”)?因此,有些语言具有需要多个字节来表示的字符。将它们存储为二进制代码点不是更容易吗?是的,我们可以,这就是UTF-32 问题是UTF-32浪费了很多空间。如果文本包含大量的欧洲/希伯来语/阿拉伯语文本,使用UTF-8,每个代码点只需要1到2个字节,但使用UTF-32,每个代码点需要4个字节需要通过UTF等对Unicode字符进行编码吗?为什么可以';我们不能简单地将它们存储为二进制代码点吗?,unicode,utf,Unicode,Utf,Unicode只需为每个字符分配一个整数。UTF-8或其他用于将这些整数(“代码点”)编码为存储在内存中的字节序列。我的问题是,为什么我们不能简单地将字符存储为其Unicode值的二进制表示形式(“代码点”)?因此,有些语言具有需要多个字节来表示的字符。将它们存储为二进制代码点不是更容易吗?是的,我们可以,这就是UTF-32 问题是UTF-32浪费了很多空间。如果文本包含大量的欧洲/希伯来语/阿拉伯语文本,使用UTF-8,每个代码点只需要1到2个字节,但使用UTF-32,每个代码点需要4个字节
如果我们将整数值存储为可变大小,例如0~255使用1个字节,256~65535使用2个字节等,我们将遇到歧义问题,例如
5a
应表示“ZZ”或婚"? 基本上,解决方案就是我们所说的UTF-8——我们使用一些特殊的位来指示字节序列的长度,以给出唯一的解码结果。首先,有一种方法可以将它们存储为原始码点。这就是UTF-32或UCS-4。每个字符将始终是四个字节,并且存储每个未修改的码点
但是,使用UTF-8等其他设备的原因包括:
- ASCII兼容性:只包含U+0000-U+007f的文件根本不需要更改
- 大小效率:UTF-8通常以更小的文件结束