PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG

PLSQL往Oracle数据库插入中文后变为问号 和 启动PLSQL时提示NLS_LANG


2024年5月3日发(作者:)

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)。


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714731562a2504618.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信