解决Oracle表中数据乱码的问题

PLSQL中文显示乱码,可能是oracle客户端和服务器端的编码方式不一样。网上有很多帖子介绍解决方法,但都说得不清不楚的,这里我将自己经过实践和理解的真正的解决方案分享一下。


在这里,我使用的是本机的Oracle,按照以下两个步骤进行:首先要查询ORACLE服务器的语言、地域和字符集,然后将查询结果设置为本地的环境变量:NLS_LANG。具体如下:
1. 查询ORACLE服务器的语言、地域和字符集

select * from nls_database_parameters;

查询结果如下图,
下图NLS_LANGUAGE 表示“语言”,NLS_TERRITORY  表示“地域”,NLS_CHARACTSET 表示“字符集”,将他们三个按照“语言_地域.字符集”的格式拼接起来,就有了“AMERICAN_AMERICA.ZHS16GBK”(注意:这里要根据你自己的ORACLE服务器的这三个值进行拼接哦~不要简单的复制粘贴)


2.设置本地环境变量:NLS_LANG,
进入 我的电脑,属性,高级,环境变量,添加1项:
  NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
(注意:这里要根据你的ORACLE服务器的这三个值进行拼接~不要复制粘贴)


OK,重新打开PLSQL dev  ,中文显示正常拉!!! **注意的是,如果此时查看表还未正常显示,解决办法是:删除表,重新创建,再添加内容**(之前一直不知道,以为改了环境变量就行了,折腾了很久)zh~~


还有一点需要注意的是:网上很多方案说要修改本地注册表中的“HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->KEY_OraClient11g_home1”项,其实这是不对的,这已注册表项是本地ORACLE的字符集,跟你要访问的服务器ORACLE没有关系的。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值