lea*_*ord 2 mysql varchar character-set utf-8
提示:要使用 UTF-8 节省空间,请使用 VARCHAR 而不是 CHAR。否则,MySQL 必须为 CHAR CHARACTER SET utf8 列中的每个字符保留三个字节,因为这是可能的最大长度。例如,MySQL 必须为 CHAR(10) CHARACTER SET utf8 列保留 30 个字节。
来自:http : //dev.mysql.com/doc/refman/5.7/en/charset-unicode-utf8.html
这是否意味着如果我在 mysql 中使用除char utf8列之外的varchar utf8列,mysql 将使用 1 个字节的拉丁语和 3 个字节的 CJK(Chinese?japanese?Korean) 物理存储字符?
CHAR(...) CHARACTER SET utf8每个字符总是占用 3 个字节——CHAR(100)占用 300 个字节(不需要长度)。
VARCHAR一个长度占用 1-2 个字节,再加上需要的字节数。因此VARCHAR(100)withhello将在任何字符集中占用 7 (2+5) 个字节。
Señor, in CHARACTER SET latin1, 取 5 个字节(加上长度)。在 utf8 中,它需要 6 个字节(加上长度)。这是因为ñ是F1latin1 中的 1 字节十六进制或C3B1utf8 中的 2 字节。
一些汉字和一些表情符号,需要4个字节,utf8mb4对他们来说是更好的选择。
使用CHAR代替VARCHAR. 它们通常用于长度一致的字段,例如邮政编码、国家/地区代码、md5、uuid 等。所有这些也可能是CHARACTER SET ascii或可能是latin1,但不是utf8。
回到你的问题......使用CHARACTER SET utf8(或utf8mb4):
“mysql 将使用 1 个字节的拉丁语和 3 个字节的 CJK 物理存储字符”措辞不正确。将“拉丁语”更改为“英语”以使其正确。(“拉丁语”往往包括各种带重音的字符。)
| 归档时间: |
|
| 查看次数: |
3582 次 |
| 最近记录: |