首页 > 解决方案 > 如何使用 Spring 和 MySQL 配置 Wildfly 以支持 unicode 表情符号?

问题描述

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

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

表的排序规则都是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 年,默认情况下仍然无法正常工作。疯狂的。任何建议将不胜感激。

标签: mysqlspringspring-datawildfly

解决方案


解决方案修改/etc/my.cnf MySQL 配置文件,几乎如下所述:

https://stackoverflow.com/a/3513812/4109477

但是有了这两行:

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

使用 utf8mb4 而不是 utf8 很重要。

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


推荐阅读