oracle 插入中文查询显示乱码,问号是什么原因

oracle 插入中文查询显示乱码,问号是什么原因,第1张

首先,检查DB中字符集,可以通过以下的SQL来查得,

SELECT  FROM v$nls_parameters;

或者

SELECT USERENV ('language') FROM DUAL;

比如查询结果:

SIMPLIFIED CHINESE_CHINAZHS16GBK

那么字符集就是:ZHS16GBK;

然后设置客户端的本地字符集:

注册表:

默认情况下,windows上的Oracle安装使用注册表来定义这个设置。
版本 10g 及以上:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name>
这里您会看到一个条目名为NLS_LANG


在64位windows平台上安装32位软件,会使用32位兼容性路径
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_<oracle_home_name>

或者环境变量:'我的电脑' -> '属性' > '高级'  -> '环境变量'

增加一个:nls_lang = SIMPLIFIED CHINESE_CHINAZHS16GBK

重启一下机器就可以了。

打开PLSQL

d出登陆界面,进去登陆

随便写了一个查询语句,发现显示有乱码

解决办法:

先查看oracle服务器端的字符编码是什么

配置一个环境变量就可以解决问题

变量名称:NLS_LANG

变量值:SIMPLIFIED CHINESE_CHINAZHS16GBK

按照下面图是

加好环境变量之后关闭PLSQL重新打开,写一个查询试试效果

如下图所示说明乱码问题解决。

1、按win+R键调出windows运行窗口,并在窗口中输入“cmd”以便进入命令行程序。

2、在cmd命令行下输入“sqlplus用户名/密码@服务名”来登录数据库,其中用户名,密码,服务名需要根据实际情况进行替换。

登陆完成后,会发现提示语并不是中午,或者包含有乱码,在sqlplus中,selectuserenv('language')fromdual;查看当前数据库的字符集。

为:SIMPLIFIEDCHINESE_CHINAZHS16GBK。需要把客户端字符集和 *** 作系统字符集都设置成这个就行了。

3、首先设置客户端字符集,右击我的电脑,选择属性。

4、在d出的“属性”对话框中,选择“高级”->“环境变量”。

5、在环境变量中查找一个名为“NLS_LANG”的环境变量,如果找不到,则新建一个。

把变量值赋值为:“SIMPLIFIEDCHINESE_CHINAZHS16GBK”(需要根据实际数据库服务器字符集进行赋值)。客户端字符集设置成功。

6、在开始菜单中选择“控制面板”-“区域和语言选项”,在该选项下对计算机语言进行设置。

7、在“高级”选项下,选择“非Unicode程序的语言”为中文,同时点击确定。

点击确定后会提示安装字符集同时提示需要重启计算机才能生效,重启吧。

8、重启完成后,再次进入sqlplus,发现中文乱码问题解决。

1首先通过SQL语句:

select userenv('language') from dual;

查询出服务器端的编码,如我自己的查询结果为:

USERENV('LANGUAGE')

AMERICAN_AMERICAZHS16GBK

2添加环境变量NLS_LANG ,值为: AMERICAN_AMERICAZHS16GBK,由此即可解决该问题。

这个问题我以前也遇到过。这是因为oracle不支持中文造成的。你可以先使用命令
export
LANG=en将环境临时换成英文,然后再安装。这个
环境变量
的修改只是临时的,重启后或者使用oracle
用户登录
时会自己换回来的。
希望对你有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10408402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存