utf8\U unicode\U ci字符串插入错误?

bwntbbo3  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(370)

我有一个java应用程序,通过它我可以对mysql数据库执行不同的操作。问题是,当插入utf8字符串时,它没有正确插入。db的字符集是 utf8 我已经将排序规则设置为 utf8_unicode_ci . 服务器连接排序规则也是 utf8_unicode_ci . 此外,当我从phpmyadmin插入数据时,它是正确插入的,但当我使用jooq从java应用程序插入数据时,它不是。例子:

Result<ExecutorsRecord> executorsRecord =
                        context.insertInto(EXECUTORS, EXECUTORS.ID, EXECUTORS.NAME, EXECUTORS.SURNAME, EXECUTORS.REGION, EXECUTORS.PHONE, EXECUTORS.POINTS, EXECUTORS.E_TYPE)
                                .values(id, name, surname, region, phone, 0, type)
                                .returning(EXECUTORS.ID)
                                .fetch();

哪里 name = "Бобр" 以及 surname = "Добр" ,生成带???的元组????作为一个名字和????作为姓氏。我已经检查了两个字符串,它们被正确地传递给方法。

4smxwvx5

4smxwvx51#

正如@spencer7593所暗示的,问题可能出在jdbc连接器中。所以我加入了 url 连接方式如下: ?characterEncoding=utf8 所以最后的网址是 "jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8" ,在哪里 mydb 是数据库的名称。这解决了我的问题。我还要补充以下声明(同样由@spencer7593编写):
当我们正确地配置了一些东西,但这些东西不起作用时,我们的目标就是jdbc驱动程序。为了理清jvm和mysql数据库之间的时区差异,为了防止jdbc驱动程序通过不合理地组合各种操作来“帮助”,我们必须在连接字符串中添加两个额外的模糊记录的设置。
进一步阅读

相关问题