windows上sqlplus客户端连接oralce数据库中文显示问题
运行环境 服务器:centos6.8 服务器oracle版本:oracle 11g R2 64位,字符集是ZHS32utf8。 客户端:navicat 12x64 windows8.1x64 问题分析 当在windows客户端使用sqlplus或navicat时如果数据库中文显示“????” 这种情况是在客户端与服务器端字符集不一致时,从客户端输入了汉字信息。输入的这些信息即便是把客户端字符集更改正确,也无法显示汉字。 解决方法:退出sqlplus,设置相应的环境变量NLS_LANG linux: text 1 export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" windows: 出现问题 此时。系统cmd命令行使用sqlplus已经正常显示中文,但是navicat中依旧是???? 图为cmd命令行访问sqlplus客户端查询 图为navicat f6弹出的sqlplus客户端 原因是因为Navicat Premium默认自带的instant client,但是其是base lite版本的(Basic Lite: Basic 的精简版本,其中仅带有英文错误消息和 Unicode、ASCII 以及西欧字符集支持),不支持中文字符集,而本文中的服务器端oracle恰好是中文字符集。自带版本不支持。此处需要去oracle官网下载相对应的版本。 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html 将下载的文件解压覆盖navicat中的instantclient目录里的文件。 此时连接oracle实例提示如下信息 尽管我们下载了64位的版本。却提示如图信息。这是因为Navicat仅支持32位的,因此还需下载一个32位的客户端。替换到instantclient目录中 替换完成后连接实例。f6使用sqlplus查询发现中文已经正常显示