java - JOOQ 表情符号 (utf8mb4) 支持

标签 java mysql emoji jooq utf8mb4

我们尝试使用 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,请确保在服务器级别或在执行查询之前设置它。

有两种方法:

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

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

关于java - JOOQ 表情符号 (utf8mb4) 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38151684/

相关文章:

text - 是否可以使用 ImageMagick 渲染多色表情符号?

java - 我可以用java代码解决数据库并发问题吗?

php - 如何获取mysql中组中的最新行?

java - 如何在tomcat负载均衡中管理 session ?

php - PHP 和 MySQL 中的多输入字段搜索不起作用

MySQL从查询中插入值

ios - 检查字符串中是否包含表情符号

mysql - 将文本中的表情符号从 MySQL 复制到 SQL Server

java - 如何使用端口号来保护 Web 请求

java - 如何按对象内部的对象字段进行排序?