使用表情符号导出数据库

Posted

技术标签:

【中文标题】使用表情符号导出数据库【英文标题】:Export database with emoji 【发布时间】:2018-03-12 09:43:08 【问题描述】:

我想用表情符号导出我的数据库,但导出有问题。当我导出表格时,表情符号被替换为“?”。

例如:

当我导出和导入时,我有这个:

我检查了我的表 (utf-8):

我使用 Sequel Pro 进行导出和导入。

但是,如果我尝试使用 DataGrip,并且直接使用“?”,我将永远看不到表情符号:

【问题讨论】:

【参考方案1】:

在运行查询之前,运行

set names utf8mb4;

为什么?

简而言之。

首先,Emoji 通常占用四个字节,但是,mysqlutf8utf8mb3 的别名,使用一到三个字节(即最大字节三个),无法理解 Emoji 字符。因此,您会看到一个“?”在你的结果中。 utf8mb4 可以完成这项工作,因为它每个多字节字符最多需要四个字节。

其次,set names utf8mb4会设置三个会话变量,例如,

SET character_set_client = utf8mb4;
SET character_set_results = utf8mb4;
SET character_set_connection = utf8mb4;

这将协调服务器、客户端和结果字符集之间的障碍,因此我们可以正确查看表情符号。

更多信息,您可以在文档中找到

https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html

https://dev.mysql.com/doc/refman/8.0/en/set-names.html

【讨论】:

虽然这可能会解决 OP 的问题,但如果您 edit 它来解释为什么会这样,那将是一个更好的答案。描述utf8mb4 是一个好的开始。 @shoover 嗨,谢谢你的建议,我已经添加了解释。

以上是关于使用表情符号导出数据库的主要内容,如果未能解决你的问题,请参考以下文章

安卓qq上怎么发iphone表情符号

请问微信😱表情符号还有其它99个表情符号各是啥意思?

将表情符号备忘单转换为安卓表情符号?

带有自定义表情符号的反应角色

如何使用 javascript 检测表情符号

如何使用 javascript 检测表情符号