在MySQL中,如果我VARCHAR(32)在UTF-8表中创建一个新字段,是否意味着我可以在该字段中存储32个字节的数据或32个字符(多字节)?
VARCHAR(32)
这个答案出现在我的Google搜索结果的顶部,但不正确,所以:
混乱可能是由于测试了不同版本的mysql。
http://dev.mysql.com/doc/refman/5.0/zh-CN/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个字符。