【发布时间】:2014-05-29 13:21:17
【问题描述】:
据我了解,UTF-16 和 UTF-32 之间的主要区别在于 UTF-32 始终是每个字符四个字节,而 UTF-16 有时是一个字节,有时是每个字符两个字节。这使 UTF-16 具有比 UTF-32 占用更少内存的优势,但 UTF-32 具有对第 n 个字符进行恒定时间访问的优势。
我的问题是,如果您可以像在 UTF-16 中那样用最多两个字节来表示每个 unicode 字符,那么为什么没有一种总是使用两个字节来编码每个字符的格式呢?这种格式虽然比 UTF-16 内存稍贵一些,但在使用一半内存的情况下允许恒定时间访问,因此绝对优于 UTF-32。
我的误解是什么?
【问题讨论】:
-
UTF-16 代码单元为 16 位宽(2 个八位字节(大多数现代硬件上的字节))。整个代码点使用一个或两个 16 位代码单元,因此最多使用 32 位,如 UTF-32。如果您想要更节省空间、更容易处理且与字节顺序无关的编码,请查看 UTF-8。
-
看看标签维基。它们信息量很大。
-
在此处了解更多信息:utf8everywhere.org
标签: memory unicode encoding utf