在 MySQL 中解码 VARCHAR 长度和 UTF-8
在 MySQL 中创建 VARCHAR 字段时,会出现关于数据存储容量的常见误解。用户可以假设 UTF-8 表中的 VARCHAR(32) 字段可以容纳 32 个字节或 32 个字符,以较大者为准。然而,实际的解释取决于所使用的 MySQL 版本。
版本 4 与版本 5
在 4.1 之前的 MySQL 版本中,VARCHAR 长度以字节为单位。因此,VARCHAR(32) 字段最多可以存储 32 字节的数据。但是,在 MySQL 版本 5 及更高版本中,VARCHAR 长度以字符单位解释。因此,UTF-8 表中的 VARCHAR(32) 字段最多可以容纳 32 个字符。
MySQL 官方文档
为了澄清这个问题,MySQL 官方文档5 文档明确指出:
“MySQL 以字符单位解释字符列定义中的长度规范。(在 MySQL 4.1 之前,列长度以字节为单位解释。)这适用于 CHAR、VARCHAR 和 TEXT 类型。”
UTF-8 的影响
此外,使用的字符集会影响 VARCHAR 列的最大长度。例如,UTF-8 字符每个字符最多需要三个字节。因此,使用 UTF-8 的 VARCHAR 列最多可声明为 21,844 个字符。这受到最大行大小 65,535 字节的限制。
以上是MySQL 如何解释 UTF-8 表中的 VARCHAR 长度?的详细内容。更多信息请关注PHP中文网其他相关文章!