我们尝试使用 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 存储的表情符号工作正常。
最佳答案
要在应用程序中使用 utf8mb4,请确保在服务器级别或在执行查询之前设置它。
有两种方法:
服务器级别:将 character_set_server=utf8mb4 添加到 my.cnf 或“设置全局 character_set_server=utf8mb4”
在运行查询之前:“set names utf8mb4”
关于java - JOOQ 表情符号 (utf8mb4) 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38151684/