为什么unicode必须使用utf-8?

Que*_*ing -2 unicode encoding

据我所知,UNICODE是角色映射的行业标准.

我没有得到的是为什么它必须通过UTF-8编码而不是直接编码为Unicode?

说字母"a",为什么不能只将它存储为带有"U + 0061"作为值的字符串,并且必须存储为八进制0061?

我有意义吗?

Kei*_*son 7

谁说它必须编码为UTF-8?Unicode有几种常见的编码方式,包括UTF-16(大端或小端),以及一些不太常见的编码,如UTF-7和UTF-32.

Unicode本身不是编码; 它只是几千个字符的数字代码点的规范.

小写的Unicode代码点a是十六进制的0x61,十进制的97或八进制的0141.

如果你建议'a'应该将其编码为6个字符的ASCII字符串"U+0061",那将会非常浪费空间并且比UTF-8更难解码.

如果您建议直接存储数值,那就是UTF-32所做的:它将每个字符存储为直接表示代码点的32位(4个八位字节)数字.麻烦的是它几乎和"U + 0061"一样浪费空间(每个字符4个字节对比6.)

UTF-8编码具有许多优点.一个是它向上兼容ASCII.另一个是,即使对于非ASCII字符,它也是相当有效的,只要大多数编码文本在前几千个代码点内.

UTF-16还有其他一些优点,但我个人更喜欢UTF-8.MS Windows倾向于使用UTF-16,但主要是出于历史原因; 当定义的代码点少于65536时,Windows增加了Unicode支持,这使得UTF-16与UCS-2等价,这是一种更简单的表示.