文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  utf32 字元集 (UTF-32 Unicode 編碼)

12.9.7 utf32 字元集 (UTF-32 Unicode 編碼)

utf32 字元集是固定長度(如同 ucs2,不同於 utf16)。utf32 為每個字元使用 32 位元,不同於 ucs2(為每個字元使用 16 位元)和 utf16(為某些字元使用 16 位元,為其他字元使用 32 位元)。

utf32 佔用的空間是 ucs2 的兩倍,且比 utf16 佔用更多空間,但 utf32ucs2 具有相同的優點,即其儲存是可預測的:utf32 所需的位元組數等於字元數乘以 4。此外,與 utf16 不同,utf32 中沒有編碼技巧,因此儲存的值等於程式碼值。

為了展示後者的優點是如何有用的,以下範例展示如何根據 utf32 程式碼值來判斷 utf8mb4

/* Assume code value = 100cc LINEAR B WHEELED CHARIOT */
CREATE TABLE tmp (utf32_col CHAR(1) CHARACTER SET utf32,
                  utf8mb4_col CHAR(1) CHARACTER SET utf8mb4);
INSERT INTO tmp VALUES (0x000100cc,NULL);
UPDATE tmp SET utf8mb4_col = utf32_col;
SELECT HEX(utf32_col),HEX(utf8mb4_col) FROM tmp;

MySQL 對於新增未指派的 Unicode 字元或私用區域字元非常寬容。事實上,針對 utf32 只有一個有效性檢查:程式碼值不得大於 0x10ffff。例如,以下是不合法的

INSERT INTO t (utf32_column) VALUES (0x110000); /* illegal */