如何获取4字节表情符号以正确存储在mysql 5.7中?

时间:2019-06-19 19:03:42

标签: mysql

只有3个字节的表情符号正确存储在我的数据库中。似乎只存储了4字节表情符号的第一个字节。结果显示为

我已经将所有内容都转换为utf8mb4(数据库,表,my.cnf等)。似乎仅在检查时将第一个字节存储在数据库中(不会引发任何错误)。 3字节的表情符号似乎还不错。

+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+ 


update tweeters set name = 'Test Emoji ?' where id=875198003409190912;

What actually shows in my console when I pasted in the emoji (Mojave terminal) 
update tweeters set name = 'Test Emoji �' where id=875198003409190912;

除了我在数据库配置上做错事情之外,这里唯一的因素是我的控制台在粘贴时似乎也不支持4字节的表情符号。即使那是mysql控制台上的原因,我也不支持知道如何修复Rails脚本以正确地插入它们(我也在其中设置了正确的编码和排序规则)。

1 个答案:

答案 0 :(得分:2)

最后,它最终变成了旧代码,执行“ SET NAMES UTF8”,覆盖了database.yml配置。确实是macOS Mojave终端让我陷入了循环,因为它不支持篮球等4字节表情符号的显示,我认为这与此相关。安装MySQL Workbench之后,我可以看到我正在正确设置和检索数据,然后查看日志并看到发送了错误的集名称。