MySQL 的字符大小和字符集有关,如果字符集是 ascii,保存不了中文(会显示成乱码),如果是 UTF8,每个字符是1-3个字节。
用事实说话
试验用的 MySQL 5.6
先检查数据库字符集
show variables like '%char%';
结果:UTF8
| Variable_name | Value |
|---|---|
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\Program Files\MySQL\MySQL Server 5.6\share\charsets\ |
创建表(注意:varchar(10))
CREATE TABLE `test_char` (
`s` VARCHAR(10) NULL DEFAULT NULL
)
插入数据
十字ASCII字符,正确执行
insert into test_char
(s)
values
('0123456789')
;
十个中文字符,正确执行
insert into test_char
(s)
values
('一二三四五六七八九十')
;
但是十一个ASCII或中文都是报错,说数据太长。
结论
长度是当前字符集的字符长度,而不是字节长度!
本文通过实验展示了MySQL中字符集设置对字符长度的影响。使用UTF8字符集时,每个字符占用1-3个字节,长度限制由字符而非字节决定。实验包括创建表、插入ASCII与中文字符,验证不同字符数量时的执行结果。
5797

被折叠的 条评论
为什么被折叠?



