Unicode 的全稱是 Unicode 標準(The Unicode Standard)。
Unicode 又被稱為:統一碼、萬國碼、統一字元碼、統一字元編碼。
Unicode 至今仍在不斷增修,每個新版本都加入更多新的字元。目前 Unicode 最新的版本為 2021 年 9 月 14 日公佈的 14.0.0,已經收錄超過 14 萬個字元。
技術是為了解決問題而生的,Unicode 編碼解決了什麼問題,它的作用是什麼呢?
大概來說,Unicode 編碼系統可分為 「編碼方式」 和 「實現方式」 兩個層次。
《The Unicode Standard Version 6.2 – Core Specification》檔案給出了 Unicode 的十大設計原則:
Unicode 為每一個有效字元定義一個唯一的程式碼點(code point,即一個整數)。通常使用十六進位製表示法來表示 Unicode 程式碼點,並使用 "U+" 作為字首。比如,「字母 a」 的 Unicode 程式碼點是 U+0061。
Unicode 的實現方式不同於編碼方式。一個字元的 Unicode 編碼結果確定,但是在實際傳輸過程中,由於不同系統平臺的設計不一定一致,以及出於節省空間的目的,對 Unicode 編碼的實現方式有所不同。
系統平臺指的是:在電腦裡讓軟體執行的系統環境,包括硬體環境 和 軟體環境。
Mac 和 Windows 對位元組序的理解不一致。這時同一位元組序列可能會被 Mac 和 Win 解碼為不同內容,比如某字元的程式碼點為 4E59,按兩個位元組拆分為 4E 和 59:
位元組序指的是:資料在儲存和傳輸時的位元組順序,也就是位元組的排列順序。
Unicode 的實現方式稱為 Unicode 轉換格式(Unicode Transformation Format,簡稱為 UTF)。Unicode 相當於規定了字元對應的程式碼點,這個程式碼點需要轉換為位元組序列的形式去儲存、傳輸。
Unicode 常見的實現方式有:UTF-8、UTF-16小端序(LE)、UTF-16大端序(BE)、UTF-32
在這幾種實現方式的名稱中,「-」 右邊的整數的含義是:以多少個位元位作為一個編碼單元。以 UTF-8 為例,它會以 8 個位元(一個位元組)作為一個編碼單元。
Unicode 的編碼空間從 U+0000 到 U+10FFFF,共有 1,112,064 個程式碼點(code point)可用來對映字元。Unicode 字元 和 程式碼點是一對一對映的。
Unicode 將編碼空間分成 17 個平面,以 0 到 16 編號。每個平面包含 65536(216)個程式碼點。
第 0 平面(或者說基本多文種平面)中的碼點,都可以用一個 UTF-16 單位來編碼,或者以 UTF-8 來編碼的話,會使用一、二 或 三 個位元組。而第 1 到 16 平面(或稱輔助平面)中的碼點,UTF-16 會以代理對的方式來使用,而 UTF-8 則會編碼成 4 個位元組。
平面 | 始末字元值 | 中文名稱 |
---|---|---|
0號平面 | U+0000 - U+FFFF | 基本多文種平面 |
1號平面 | U+10000 - U+1FFFF | 多文種補充平面 |
2號平面 | U+20000 - U+2FFFF | 表意文字補充平面 |
3號平面 | U+30000 - U+3FFFF | 表意文字第三平面 |
4號平面 至 13號平面 | U+40000 - U+DFFFF | (尚未使用) |
14號平面 | U+E0000 - U+EFFFF | 特別用途補充平面 |
15號平面 | U+F0000 - U+FFFFF | 保留作為私人使用區(A區) |
16號平面 | U+100000 - U+10FFFF | 保留作為私人使用區(B區) |
本文來自部落格園,作者:真正的飛魚,轉載請註明原文連結:https://www.cnblogs.com/feiyu2/p/Unicode.html