小智 159
这个答案显示在我的谷歌搜索结果的顶部,但不正确所以:
混淆可能是由于正在测试的不同版本的mysql.
http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html
MySQL以字符为单位解释字符列定义中的长度规范.(在MySQL 4.1之前,列长度以字节为单位进行解释.)这适用于CHAR,VARCHAR和TEXT类型.
有趣的是(我没想过)varchar列的最大长度受utf8影响如下:
MySQL 5.0.3及更高版本中VARCHAR的有效最大长度受最大行大小(65,535字节,在所有列之间共享)和使用的字符集的限制.例如,utf8字符每个字符最多可能需要三个字节,因此使用utf8字符集的VARCHAR列可以声明为最多21,844个字符.
它可以让你存储32个多字节字符
要使用UTF-8节省空间,请使用VARCHAR而不是CHAR.否则,MySQL必须为CHAR CHARACTER SET utf8列中的每个字符保留三个字节,因为这是可能的最大长度.例如,MySQL必须为CHAR(10)CHARACTER SET utf8列保留30个字节.
http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html
用于整理的32个多字节数据,我刚刚使用XAMPP进行了测试.varchar(32)utf8_unicode_ci
????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
被截断为:
????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
请记住,这些不是常规的ASCII字符.