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) 支持的主要内容,如果未能解决你的问题,请参考以下文章