Mysql
如果我在mysql中使用utf8創建數據庫,字元需要多少字節
假設如果創建一個具有 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 ...;
這應該讓你自己看看發生了什麼。