我有一个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 = "Добр"
,生成带???的元组????作为一个名字和????作为姓氏。我已经检查了两个字符串,它们被正确地传递给方法。
1条答案
按热度按时间4smxwvx51#
正如@spencer7593所暗示的,问题可能出在jdbc连接器中。所以我加入了
url
连接方式如下:?characterEncoding=utf8
所以最后的网址是"jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8"
,在哪里mydb
是数据库的名称。这解决了我的问题。我还要补充以下声明(同样由@spencer7593编写):当我们正确地配置了一些东西,但这些东西不起作用时,我们的目标就是jdbc驱动程序。为了理清jvm和mysql数据库之间的时区差异,为了防止jdbc驱动程序通过不合理地组合各种操作来“帮助”,我们必须在连接字符串中添加两个额外的模糊记录的设置。
进一步阅读