前言:
dbeaver是一个优秀的通用数据库客户端连接工具,最重要的是社区版一直是开源免费。但是在连接服务端的WE8ISO8859P1字符集时,表中的数据中文查询出来显示为乱码,无论怎么修改参数都没用。
方法一:
在PL/SQL的前面设置字符集:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
startup plsql.exe
方法最佳,但PL/SQL 毕竟是收费的。
方法二:
在sqlplus命令前设置字符集:
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
方法三:使用druid,参考https://my.oschina.net/joshuazhan/blog/122591
步骤:
1、下载druid,开源免费,“阿里巴巴计算平台事业部出品,为监控而生的数据库连接池”。
https://repo1.maven.org/maven2/com/alibaba/druid/1.1.23/
2、将下载的druid-1.1.23.jar、ojdbcXX.jar加入到驱动。本人偷懒直接用dbeaver下载的ojdbc8-12.2.0.1.jar
3、新增加一个驱动,如下:
类名:com.alibaba.druid.proxy.DruidDriver
驱动模板:jdbc:wrap-jdbc:filters=encoding:name=dbeaver:jdbc:oracle:thin:@{host}[:{port}]/{database}
连接参数:
clientEncoding:GBK
serverEncoding:ISO-8859-1
3、测试连接,成功!
4、在SQL中查询,结果已正常显示中文。
5、周围显示的红色代表是在生产环境,绿色的代表开发环境,以提醒操作人员。
小结:druid没有原生的jdbc驱动强大,但它确实解决了字符集不匹配的问题,也是一个很好的免费解决方案。如果默认没有字符集不匹配的情况,直接用原生的Oracle驱动即可。
参考:
https://my.oschina.net/joshuazhan/blog/114194
https://my.oschina.net/joshuazhan/blog/122591
https://github.com/alibaba/druid/
https://repo1.maven.org/maven2/com/alibaba/druid/1.1.23/