DbVisualizer查询结果乱码解决方法

乱码原因分析

DbVisualizer常用的一些配置这篇文章里,我们介绍了通过设置字体,解决sql编辑页中中文显示乱码的方法。在实际的使用中,还有可能出现另一种情况的乱码,即sql的查询结果乱码。
解决此类错误,我们首先要确定的是出现乱码的原因。乱码最常见的原因就是数据在服务器和客户端传输时,由于服务器端编码和客户端编码不一致,数据以不同的编码格式进行解析,就会出现乱码的情况。
DbVisualzer查询结果乱码的原因也是类似的,当数据库服务器端编码与DbVisualzer设置的编码不一致,也会造成乱码。通常DbVisualzer安装完成后,默认编码为GBK。如果不确定,也可以在 Tools -> Tool Properties,在弹出页面的General中,点击File,查看右方Default File Encoding。



数据库服务端编码根据不同的数据库类型,查看方式有所差异。Oracle数据库可以在连接数据库以后,执行以下sql语句进行查询。

select userenv(‘language’) from dual;

查询结果 SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1,其中WE8ISO8859P1表示编码格式为ISO-8859-1;UTF-8编码则显示为AL32UTF8。
由于ISO-8859-1编码不支持中文,所以在DbVisualzer中,查询结果会出现中文乱码的情况。

解决方案

Druid是阿里巴巴开源的一款JDBC组件库,可以代理数据库连接,并且拥有过滤器功能,可以对数据进行编码格式转换。我们可以使用该组件代理数据库连接,对数据编码格式进行转换,解决查询结果乱码的问题。
我们以Oracle数据库为例,说明在DbVisualizer中如何设置。
首先,准备好Druid和相应数据库连接的jar包,并将jar包保存在本地文件夹下(如:C:\Program Files\DbVisualizer\jdbc\druid-oracle)。
然后,我们需要在DbVisualizer中新增相应的驱动。具体步骤为,选择菜单中的Tools -> Driver Manager…页面显示如下:

点击菜单栏中绿色的加号,显示如下


在页面右方分别填入Name(如druid-oracle)和URL Format。注意URL Format需要填充固定格式 jdbc:wrap-jdbc:filters=encoding:name=dbvis:jdbc:oracle:thin:@{host}[:port]/{database} 其中”name=dbvis:”可不填写,其他为固定格式。点击右方红色小方块中的文件夹图标,依次选择相应的druid和数据库驱动的jar包,并在Driver Class中选择com.alibaba.druid.proxy.DruidDriver。
完成后效果如下图

最后,我们按照正常方式使用druid-oracle驱动创建数据库连接,注意Database URL中,数据库连接格式要与上方配置的格式相同,即开头一定要有jdbc:wrap-jdbc:filters=encoding:
正常创建完连接后,我们还需要在连接的属性中设置指定的编码格式,用于druid进行查询结果的编码转换。具体设置方式如下图

选择Properties中的Driver Properties,点击最右方的绿色加号按钮,根据服务器编码格式,添加相应的配置。
serverEncoding=ISO8859-1;clientEncoding=GBK
添加完成后效果如图

经过以上设置,查询结果即可按照druid连接属性中设置的serverEncoding和clientEncoding编码格式进行转换了,中文查询乱码即可解决。

查询效果对比。
修改前:

修改后:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值