只有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脚本以正确地插入它们(我也在其中设置了正确的编码和排序规则)。
答案 0 :(得分:2)
最后,它最终变成了旧代码,执行“ SET NAMES UTF8”,覆盖了database.yml配置。确实是macOS Mojave终端让我陷入了循环,因为它不支持篮球等4字节表情符号的显示,我认为这与此相关。安装MySQL Workbench之后,我可以看到我正在正确设置和检索数据,然后查看日志并看到发送了错误的集名称。