天天看點

代碼點與代碼單元

代碼點可了解為字元。一個代碼點就是一個字元

代碼單元:不同編碼,代碼單元長度不一樣。

UTF-8 中的代碼單元由 8 位組成。

UTF-16 中的代碼單元由 16 位組成。

UTF-32 中的代碼單元由 32 位組成。

GB18030 中的代碼單元由 8 位組成。

UTF-8

在 UTF-8 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點将被映射到一個、兩個、三個或四個代碼單元。

UTF-16

UTF-16 的代碼單元大小是 8 位代碼單元的兩倍。是以,标量值小于 U+10000 的代碼點被編碼到單個代碼單元中。

對于标量值大于或等于 U+10000 的代碼點,每個代碼點需要兩個代碼單元。在 UTF-16 中,這些代碼單元對有一個獨特的術語:“Unicode 代理對”。

注意

下面對 Unicode 代理對的支援進行了讨論。

UTF-32

UTF-32 中使用的 32 位代碼單元足夠大,每個代碼點都可編碼為單個代碼單元。

GB18030

在 GB18030 中,因為代碼單元較小的緣故,每個代碼點常常被映射到多個代碼單元。代碼點将被映射到一個、兩個或四個代碼單元。

java 采用utf-16編碼,是以,通常一個代碼點是一個代碼單元,但有些輔助字元是2個代碼單元。

在.NET裡面,通常是用位元組來衡量字元長度,但java是用代碼單元。