【问题标题】:utf-32 advantage explanationutf-32优势说明
【发布时间】:2013-05-13 22:50:56
【问题描述】:
在网上diveintopython3一书中,说utf-32和utf-16的优势在于
UTF-32 是一种简单的编码;它需要每个 Unicode 字符
(一个 4 字节的数字)并表示具有相同数字的字符。
这有一些优点,最重要的是你可以找到
常数时间内字符串的第 N 个字符,因为第 N 个
字符从第 4×N 个字节开始
有人可以解释一下吗?如果可能的话,举个例子..我不确定我是否完全理解它
【问题讨论】:
标签:
unicode
character-encoding
utf-32
【解决方案1】:
Unicode 的常用编码是 UTF-8; UTF-8 表示具有可变字节数的字符。例如,“L”字符用一个字节(0x4c)编码,而“é”用两个字节(0xc3、0xa9)编码。所以在 UTF-8 编码中,单词“Lézard”占用 7 个字节,如果不解码所有字符,就无法获得第 N 个字符(你不知道每个字符需要多少字节)。
在 UTF-32 中,所有个字符使用 4 个字节,所以要得到第 N 个字符,你只需要去 4×(N-1) 个字节。第一个字符在位置 0,第二个在位置 4,第三个在位置 8,等等。
【解决方案2】:
正如 Pavel 所说,字符没有什么意义,并且它们最接近的等价物在不同的语言中意味着不同的东西(参见:印度文字)。即使是这样,在 UTF-32 中,尽管有不同的含义,但很容易计算出你认为的字符是什么。由于固定宽度,无论是拉丁语 'A'、Chandrakala、கா 等。