UTF-16 编码如何工作?

How does UTF-16 encoding works?

今天我学习了字符编码和 Unicode,但有一件事我不确定。我使用 this 网站将 更改为 Unicode 101101101010111(根据我的理解,这是一个字符集)并将相同的符号更改为 UTF-16(字符编码系统)01010111 01011011这就是它应该如何保存在内存或桌面上。

我说的对吗? 如果是,编码系统如何将 101101101010111 更改为 01010111 01011011?它是如何工作的?

核心的 Unicode 确实是一个字符集,也就是说,它将数字分配给大多数人认为的 字符。这些数字称为 codepoint.

字的代码点是U+5B57。这是通常指定代码点的格式。 "5B57"是十六进制数。

在二进制中,5B57101101101010111,如果扩展到16位就是0101101101010111。但是用二进制指定代码点是很不寻常的。

UTF-16 是 Unicode 的几种编码之一,即内存或文件中的表示。 UTF-16 使用 16 位代码单元。由于 16 位是 2 个字节,因此存在两种将其拆分为字节的变体:

  • little-ending(低8位在前)
  • big-endian(高8位在前)

它们通常被称为 UTF-16LEUTF-16BE。由于当今大多数计算机都使用小端架构,因此 UTF-16LE 更为常见。

单个代码点可以产生 1 或 2 个 UTF-16 代码单元。在这种特殊情况下,它是单个代码单元,并且与代码点的值相同:5B57。它被保存为两个字节,或者是:

5B 57(或 01011011 01010111 二进制,大端)

57 5B(或 01010111 01011011 二进制,小端)

后一张就是你展示的那一张。所以是UTF-16LE编码。

对于产生 2 个 UTF-16 代码单元的代码点,编码涉及更多。 UTF-16 Wikipedia article.

中有说明