怎么解决PLSQL连接oracle查询出现乱码

哦对对对,2 02 2 年我遇到这事儿特闹心。
在武汉,当时调试个PLSQL连接Oracle的代码,查出来的数据全是乱码,一串串的?当时我也懵了,查查查,最后发现是NLS_LANG没对上。

得先确认下Oracle服务器那头的编码,人家用的是什么。
你得去查那个服务器,看看是ZHS1 6 GBK还是AL3 2 UTF8 或者其他啥。
我这儿当时是ZHS1 6 GBK,这步特重要,搞错了后面全白搭。

然后在Windows上配置NLS_LANG。
你得打开控制面板,对,就是那个经典的Windows界面,找到“系统和安全”,再点“系统”,然后“高级系统设置”,最右边有个“环境变量”,点它。
在“系统变量”那块儿,点“新建”,变量名就写NLS_LANG,值填SIMPLIFIEDCHINESE_CHINA.ZHS1 6 GBK。
注意,这值得跟你查到的Oracle编码对得上。
填完保存,退出。

关键来了,你得重启PLSQL。
直接关闭PLSQL,完全关掉,然后重新打开。
再连接上数据库,跑个查询,比如SELECT FROM 表名。
如果这时候数据正常显示,没乱码了,那就OK了。
我当时看到正常的汉字时,才反应过来,哎,总算解决了。

还有啊,万一Oracle那边是AL3 2 UTF8 ,那你NLS_LANG就得改成SIMPLIFIEDCHINESE_CHINA.AL3 2 UTF8 这事儿得盯紧点。
配置完环境变量,必须重启PLSQL才管用,你光重新登录数据库没用。
再一个,你操作系统那边的区域设置也得跟NLS_LANG里的“语言_地区”部分对得上,比如SIMPLIFIEDCHINESE_CHINA,不然也可能出问题。
我这事儿,折腾了好几天,最后才弄明白。

plsql数据库环境配置 plsql安装环境变量配置

说实话,搞PLSQL这玩意儿,环境配置确实有点绕,我当年装的时候还折腾了半天。
下面我根据自己踩过的坑,给你捋一捋。

先说安装,这步其实挺简单。
你到Oracle官网下个PL/SQL Developer的安装包,不是啥破解版,官方的才稳当。
双击那个.exe文件,一路Next就行。
安装路径我建议别用默认的,自己记清楚放哪儿了,后面环境变量配置用得上。
有没有在桌面放快捷方式随你便,反正我后来发现直接在开始菜单里找更快。

有意思的是接受协议那步,每次安装都弹出来挺烦人的。
直接找那个"I Agree"的勾,点它,然后继续下一步。
别管那堆英文条款,谁看啊。

环境变量配置是关键,我给你按我踩坑的经验说说。
先说ORACLE_HOME,这玩意儿千万不能忘。
在电脑右键选"此电脑",点"属性",然后"高级系统设置"。
进去后有个"环境变量"按钮,点它。
在"系统变量"里点"新建",变量名写ORACLE_HOME,变量值填你Oracle Client放的位置,比如我放的是"D:\Program Files (x8 6 )\instantclient_1 1 _2 "。
这里有个小坑,变量值前面别加引号,加上了后面连接数据库会出问题,我当时就因为这个卡了很久。

再说TNS_ADMIN,这步我一开始也没搞懂,后来请教了同事才知道。
也在"环境变量"里点"新建",变量名写TNS_ADMIN,变量值填Oracle Client里networkadmin文件夹的路径,比如"D:\Program Files (x8 6 )\instantclient_1 1 _2 \networkadmin"。
这个目录存着tnsnames.ora文件,挺重要的。

配置PLSQL连接Oracle数据库那步,我建议按以下步骤来。
先打开PLSQL Developer,别急着连数据库,去菜单栏点"Tools"——"Preferences"。
在Preferences窗口里找"Oracle"这个节点,点开它,然后选"OCILibrary"。
这里要填Oracle Client里那个oci.dll文件的完整路径,比如"D:\Program Files (x8 6 )\instantclient_1 1 _2 \oci.dll"。
填完这个,再回到"OracleHome"这里,填的值要跟你之前设置的ORACLE_HOME一样。

应用完设置后,PLSQL Developer得重启一下。
我第一次没重启,结果配置一直没生效,当时真把我急得。
重启后,去"Database"——"New Connection"创建新连接。
在弹出的窗口里,先起个连接名,比如"我的数据库"。
下面填用户名、密码,然后在"Connection Type"选"Oracle", "Connection Name"填你刚才写的连接名。
最关键的是,点那个"Advanced"按钮,在"Network Configuration"里找到你配置的tnsnames.ora文件路径,比如"D:\Program Files (x8 6 )\instantclient_1 1 _2 \networkadmin\tnsnames.ora",然后选你数据库的服务名。
最后点"Test"按钮测一下,如果显示"Connection Successful",那就点"OK"保存。

数据我记得是X左右,但建议你核实