我们尝试使用JOOQ在MySQL 5.6数据库中存储和读取表情符号。 数据库,表和列使用字符集utf8mb4和collation utf8mb4_unicode_ci。使用MySQL Workbench,我可以创建并选择表情符号。所以数据库应该准备就绪。
但是当我用JOOQ存储表情符号时,我得到: 字符串值不正确:' \ xF0 \ x9F \ x98 \ x80'对于专栏' test'在第1行
DSLContext dslContext = DSL.using(dataSource, SQLDialect.MYSQL);
dslContext.insertInto(table)
.set(testRecord)
.returning()
.fetchOne();
检索我用MySQL Workbench存储的表情符号工作正常。
答案 0 :(得分:1)
要在应用程序中使用utf8mb4,请确保在服务器级别或执行查询之前进行设置。
有两种方法:
服务器级别:将character_set_server = utf8mb4添加到my.cnf或“set global character_set_server = utf8mb4”
在运行查询之前:“set names utf8mb4”