UTF-32
UTF-32是32位元固定長度的Unicode編碼形式。相較於UTF-8與UTF-16等可變長度編碼而言,UTF-32編碼下每個字元的長度都固定的,且與Unicode碼位的數值完全一致。
但實際上每個編碼占用32位元實在浪費太多空間,尤其是一般文件佔最大比重的資料都在基本多語言平面內,UTF-32占用了幾乎是UTF-16兩倍、UTF-8的三到四倍的空間,故實際上實務上幾乎沒有檔案規格使用UTF-32進行儲存。而多使用在需要高效率存取文字的記憶體的內部處理上。
編碼方式
UTF-32編碼下每個字元都固定式與Unicode碼位一致的32位元值。
碼位 | UTF-8 | UTF-16 | UTF-32 |
---|---|---|---|
U+0041A | 41 | 0041 | 00000041 |
U+03C9ω | CF 89 | 03C9 | 000003C9 |
U+20AC€ | E2 82 AC | 20AC | 000020AC |
U+2C9B0𬦰 | F0 AC A6 B0 | D872 DDB0 | 0002C9B0 |
理論上而言,UTF-32與UTF-16一樣,會有位元組序列順序的問題,又分成UTF-32BE與UTF-32LE。不過實務上UTF-32很少用來實際儲存檔案,所以問題不大。
比較常使用的形式反而是像AFDKO的CMap檔案,直接用來書寫Unicode碼位用:
<000020AC> 1243
歷史
原本ISO 10646標準定義了一個32位元的編碼形式UCS-4,可用來表達通用字元集(UCS)內 0x00000000~0x7FFFFFFF 編碼空間內高達20億碼位的所有文字,UTF-32原本也繼承了UCS-4的規定。
但由於UTF-16代理對限制了編碼空間最多只能到 U+10FFFF。但2003年11月,RFC 3629 標準 Unicode 限制為僅支援 U+10FFFF 以內的碼位。接下來Unicode聯盟與ISO 10646也都陸續宣示Unicode的編碼範圍會被限制在 U+10FFFF 內。故UTF-32實際上只用到21個位元,前方11個位元都是浪費的。
參考
- 建立於 2022 年 3 月 15 日 23 時 42 分
- 本條目共被 1 位不同作者編輯過 1 次
- 最後一次修改於 2022 年 3 月 15 日 23 時 42 分