druid连接mysql读取正常,但写入乱码

发布于 2021-12-02 08:08:29 字数 1707 浏览 815 评论 6

@wenshao 你好,想跟你请教个问题:


请问mysql中文乱码怎么解决……求温少给个范例…研究了好几天了,尝试各种配置还是无效


我已经在连接url中加入了useUnicode=true&characterEncoding=UTF-8&但是依然乱码


现象:


1.读取中文数据正常


2.查询条件带中文,因为乱码,查询无结果


3.写入数据带中文,数据库中显示为"?????????????"乱码


请问应该如何正确配置才能让druid对中文处理正常呢?

=====================

由于云数据库,下面这条无法修改,除了此条以外我全部按照文档修改为UTF8了


vi /etc/my.cnf

在[client]下添加

default-character-set=utf8

=====================


我DEBUG的是时候发现在DRUID进入mysql-connector-java.jar之前SQL都是正常的

当进入durid的FilterChainImpl类的

 public PreparedStatementProxy connection_prepareStatement(ConnectionProxy connection, String sql)

方法中的

PreparedStatement statement = connection.getRawObject().prepareStatement(sql);这句(第451行附近)

局部变量DEBUG调试器中,变量sql显示中文正常。(此处connection.getRawObject()返回类为com.mysql.jdbc.JDBC4Connection@1ca38160)

但是经过这句后,返回的 PreparedStatement statement(经过了mysql-connector-java.jar,我用的5.1.35版),返回结果statement里面带有乱码

希望能给个明确答复,到底怎么配置才能正确读写中文







如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

岁吢 2021-12-03 14:17:26

如果你的URL是在Java类中使用

dataSource
.setUrl("jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull");

为你鎻心 2021-12-03 14:02:26

好吧,我的问题还不一样,已经解决了

裸钻 2021-12-03 13:51:46

我也遇到这个问题,URL设置也正确,请问你是如何解决这个问题的?

反话 2021-12-03 12:17:52

碰到相同问题,请问已经解决了吗?

为你鎻心 2021-12-03 11:51:24

你把连接url中加入的改成这个:useUnicode=true&characterEncoding=utf8&characterSetResults=utf8试一试,我之前和你的问题一样,我的是这样解决的。

英雄似剑 2021-12-02 15:46:05

建议把相关代码单独领出来上传到Git@OSC,做个小样即可,便于帮助调试和发现问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文