oracle显示中文乱码的问题

oracle sqlplus中文显示乱码的问题

在windows server下sqlplus连接自己的oracle数据库完全正常,但是我连接远程linux下的oracle,sqlplus中文显示就出问题了,总是显示“??”

这个问题又怎么解决呢?

经过多次测试和思考之后,找到问题的原因:

1、oracle服务器字符集不正确

2、客户端字符集不正确

 

最终的解决办法:

1、设置相应用户的环境变量NLS_LANG:

export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 

2、设置oracle服务器的字符集

alter database character set zhs16gbk;

第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集

SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>startup mount;

ORACLE 例程已经启动。

Total System Global Area 2042241024 bytes
Fixed Size                  1337548 bytes
Variable Size            1040189236 bytes
Database Buffers          989855744 bytes
Redo Buffers               10858496 bytes
数据库装载完毕。
SQL> alter system enable restricted session;

系统已更改。

SQL> alter system set job_queue_processes=0;

系统已更改。

SQL> alter system set aq_tm_processes=0;

系统已更改。

SQL>alter database character set internal_use zhs16gbk;

系统已更改。

<--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. -->
SQL> select * from v$nls_parameters;  

SQL> shutdown immediate; 


SQL> startup 


SQL> select * from v$nls_parameters; 

3、客户端字符集的更改
比如我用的是secretCRT软件来连接我的oracle服务器,在一开始设置了字符编码为UTF8,那么oracle还是不会显示中文,所以这个时候需要把字符编码改成默认。
再看oracle里面能够正常显示中文了。<- ->


    为了下次不必重新设置,我们可以将其放在/home/oracle/.bash_profile或/etc/profile中,安装oracle数据库的时候选择自己需要的字符集。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值