Mysql

如果我在mysql中使用utf8創建數據庫,字元需要多少字節

  • June 21, 2021

假設如果創建一個具有 utf8 字元集的數據庫並創建表和插入數據。這裡我的疑問是如果字元是 1 字節那麼它將只佔用 1 字節或者由於 utf8 字元集它將佔用 3 字節

取決於一個性格。有些需要一個字節,有些需要四個。請參閱http://www.fileformat.info/info/charset/UTF-8/list.htm。MySQL 有兩個 UFT8 字元集:

mysql> SHOW CHARACTER SET like 'UTF8%';
+---------+---------------+--------------------+--------+
| Charset | Description   | Default collation  | Maxlen |
+---------+---------------+--------------------+--------+
| utf8    | UTF-8 Unicode | utf8_general_ci    |      3 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci |      4 |
+---------+---------------+--------------------+--------+
2 rows in set (0.01 sec)

如果一個字元是一個字節,它將在記憶體和磁碟上使用一個字節。如果四個 - 然後四個。另外,字元串將使用一兩個字節來編碼字元串的長度。請注意,該utf8字元集無法編碼所有 UTF8 字元。

CHAR(n)– 根據您的 MySQL 副本的年份和ROW_FORMAT,CHAR可能會為每個字元分配完整的 3 個字節。

VARCHAR(n)– 這將佔用一個或兩個字節的長度,加上只需要多少字節。CHARACTER SET utf8也就是說,對於(utf8mb3) ,每個字元將佔用 1、2 或 3 個字節。

一般來說,您應該選擇utf8mb4,每個字元最多 4 個字節。

插入一些文本後,執行

SELECT col,
      HEX(col),
      LENGTH(col),      -- number of bytes
      CHAR_LENGTH(col)  -- number of characters
   FROM ... WHERE ...;

這應該讓你自己看看發生了什麼。

引用自:https://dba.stackexchange.com/questions/258874