admin 管理员组文章数量: 1086019
2024年4月12日发(作者:mysql触发器的作用)
PL/SQL向Oracle数据库输入中文后变为问号 和 启动PL/SQL时提示NLS_LANG在客户端不能确定的解
决办法
工作需要,最近在VM虚拟机里安装了Redhat Linux系统,并在Redhat里安装了Oracle10.5,接着在本
地Win7系统里,通过安装Oracle Instant Client客户端和PL/SQL Developer工具,来访问Oracle进行SQL
操作。但一直遇到一个很奇怪的问题,通过PL/SQL Developer工具,不管是通过Insert into 插入的,或者通
过菜单:工具-ODBC导入器导入的数据,只要包含中文的值,查询时都显示其变为“?”问号了(图1)。
图 1
上网了解到这跟字符集有关,Oracle安装和导入数据时,需要Oracle的Server服务器、Client客户端以及安
装环境三者的字符集编码一致,否则就会出现乱码问题。如下图2所示,Oracle数据库的区域语言、字符集和安
装环境的区域语言、字符集设置不一致,导致Oracle中文提示变为乱码:
图 2
通过语句:
Select * from V$NLS_PARAMETERS where PARAMETER='NLS_CHARACTERSET';
Select USERENV('LANGUAGE') from DUAL;
可以查询到Oracle服务器正在使用是什么字符集;
通过查找注册表:HKEY_LOCAL_MACHINESOFTWAREORACLE里,NLS_LANG的具体键值即可知道客
户端使用的字符集(图3)。
图 3
一开始检查到Oracle服务端和客户端使用的字符集不一,于是将服务端的字符集改成ZHS16GBK以保持跟
客户端的一致,但输入中文以后测试发现问题还是没解决。
继续上网寻找解决办法,了解到PL/SQL Developer可以设置使用的字符集,在菜单:工具-首选项里,可
能因为版本问题找了一遍没发现,倒是发现在菜单:首选项-Oracle里有一项:检查客户及与服务器字符集是否
匹配(图4),马上将其勾选,确定保存后退出PL/SQL Developer,再重新打开。
这时又提示:“NLS_LANG在客户端不能确定,字符集转变将造成不可预期的后果”(图5)。
版权声明:本文标题:PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1712936396a613296.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论