[英]MySql varchar length for emojis on Sequel Pro
我在 Linux 上使用 MySql 版本 5.6.46。 我有一个列name varchar(50) COLLATE utf8mb4_bin
和ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
。
当我试图向表中插入一些数据时。 我发现,
对于
a
(utf8 中的 1 个字节),它最多可以存储 50 个。
for
爱
(utf8 3字节,汉字love),最多可存储50个。
为了
(utf8 中 4 个字节,十六进制
F09F9881
),它最多可以存储 25 个。
这让我很困惑。 为什么 Mysql 不将一个表情符号视为一个字符? 如果 Mysql 执行字节数限制并且不正确地使用每个字符 3 个字节,我希望它可以存储 50*3/4=37。 Mysql到底是怎么做限制的?
- - - - - 更新 - - - - - - -
感谢您的回复,我明白了。 我在 MacOS X 上,我使用的是Sequel Pro 1.1.2
。 当我在软件的 UI 中编辑表格内容时,最大为 25 个表情符号,并且敬酒警告maximum text length is set to 50
然后我在服务器set name = X'F09F9881...F09F9881'
上尝试了原始十六进制方法,它可以完美容纳 50 个表情符号。
所以这是一个 Sequel Pro 问题。 我将在这个问题中添加Sequel Pro
标签。 希望这会帮助遇到同样问题的人。 谢谢
不需要算术。
varchar(50)
可容纳 50 个任意类型的字符。 这将占用最多 202个字节(隐藏长度字段为 4 * 50 + 2)。
要调试您的情况,请提供:
SELECT VARIABLES LIKE 'char%';
SELECT col, HEX(col) FROM ... -- to show what was stored.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.