JOOQ 表情符号 (utf8mb4) 支持

Posted

技术标签:

【中文标题】JOOQ 表情符号 (utf8mb4) 支持【英文标题】:JOOQ emoji (utf8mb4) support 【发布时间】:2016-11-04 05:39:56 【问题描述】:

我们尝试使用 JOOQ 在 mysql 5.6 数据库中存储和读取表情符号。 数据库、表和列使用字符集 utf8mb4 和排序规则 utf8mb4_unicode_ci。使用 MySQL Workbench,我可以创建和选择表情符号。所以数据库应该已经准备好了。

但是当我使用 JOOQ 存储表情符号时,我得到: 不正确的字符串值:'\xF0\x9F\x98\x80' for column 'test' at row 1SQL

 DSLContext dslContext = DSL.using(dataSource, SQLDialect.MYSQL);

 dslContext.insertInto(table)
                .set(testRecord)
                .returning()
                .fetchOne();

检索我使用 MySQL Workbench 存储的 en emoji 工作正常。

【问题讨论】:

【参考方案1】:

要在应用程序中使用 utf8mb4,请确保在服务器级别或在执行查询之前设置它。

有两种方法:

    服务器级别:将 character_set_server=utf8mb4 添加到 my.cnf 或“设置全局 character_set_server=utf8mb4”

    在运行查询之前:“set names utf8mb4”

【讨论】:

你知道如何用 JOOQ 做到这一点吗?问题是我在自己的写入服务器上运行该服务。 不知道具体如何使用 JOOQ。但是如果你有mysql的root密码,你可以为服务器全局设置字符集:"set global character_set_server=utf8mb4"

以上是关于JOOQ 表情符号 (utf8mb4) 支持的主要内容,如果未能解决你的问题,请参考以下文章

让MySQL支持emoji表情

让mysql支持emoji表情

允许 MySQL 以 utf8mb4 编码存储表情符号?

MySQL utf8mb4,保存表情符号时出错

表情符号未正确存储在 MySQL 5.6 中,排序规则为 utf8mb4

微信emoji表情编码 MySQL 存储 emoji 表情符号字符集