这个答案出现在我的谷歌搜索结果的顶部,但并不正确.
confusion可能是由于测试的MySQL版本不同.
以下是官方MySQL 5 documentation的引用:
MySQL以字符单位解释字符列定义中的长度规范.(在MySQL 4.1之前,列长度以字节为单位进行解释.)这适用于CHAR、VARCHAR和文本类型.
有趣的是(我没有想到),varchar列的最大长度受utf8的影响如下:
MySQL 5.0.3及更高版本中VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列中共享)和使用的字符集.例如,utf8字符每个字符最多需要三个字节,因此使用utf8字符集的VARCHAR列可以声明为最多21844个字符.