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

blackcatIan 发布于 2015/06/21 10:22
阅读 1K+
收藏 0

@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里面带有乱码

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







加载中
0
GDP_搞地皮
GDP_搞地皮
建议把相关代码单独领出来上传到Git@OSC,做个小样即可,便于帮助调试和发现问题。
0
j
jiangp2013
你把连接url中加入的改成这个:useUnicode=true&characterEncoding=utf8&characterSetResults=utf8试一试,我之前和你的问题一样,我的是这样解决的。
0
lxitgto
lxitgto
碰到相同问题,请问已经解决了吗?
t
tylerosc
我也遇到这个问题,URL设置也正确,请问你是如何解决这个问题的?
lxitgto
lxitgto
好吧,我的问题还不一样,已经解决了
0
落日的忧伤

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

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

返回顶部
顶部