繁体   English   中英

MySql Sequel Pro 上表情符号的 varchar 长度

[英]MySql varchar length for emojis on Sequel Pro

我在 Linux 上使用 MySql 版本 5.6.46。 我有一个列name varchar(50) COLLATE utf8mb4_binENGINE=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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM