如何使用 Spring 和 MySQL 配置 Wildfly 以支持 unicode 表情符号?

How to configure Wildfly with Spring and MySQL to support unicode emojis?

我知道已经有很多类似的问题,但是 none 解决了我的问题。我只想将表情符号保存到数据库中。请求以正确的格式正确命中服务器,但数据库只保存问号而不是表情符号。如果我直接使用 mysql 查询插入表情符号,它就可以工作。 Wildfly 已正确连接到数据库。我做了以下步骤:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

table的排序规则都是utf8mb4_unicode_ci

jdbc:mysql://mydomain/mydb?useUnicode=yes

也尝试过:jdbc:mysql://mydomain/mydb?useUnicode=true&useEncoding=true&character_set_server=utf8mb4

并且:jdbc:mysql://mydomain/mydb?useUnicode=true&useEncoding=true&characterEncoding=UTF-8&character_set_server=utf8mb4

<property name="jpaProperties">
    <props>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.format_sql">true</prop>
        <prop key="hibernate.connection.CharSet">utf8mb4</prop>
        <prop key="hibernate.connection.characterEncoding">utf8mb4</prop>
        <prop key="hibernate.connection.useUnicode">true</prop>
    </props>
</property>

我不知道我还应该做些什么才能让它发挥作用。现在是 2018 年,默认情况下这仍然不起作用。疯狂的。如有任何建议,我们将不胜感激。

解决方案修改/etc/my.cnfMySQL 配置文件 almost 如此处解释:

但是有了这两行:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

使用utf8mb4代替utf8很重要

这个问题可能是重复的,但也许值得把它留在这里,以帮助那些认为他们已经像我一样尝试过所有事情并且有类似情况的人。