Oracle:sqlplus查询出的中文是乱码问题的解决(转)

有一台远程服务器不能通过Oracle客户端远程登陆,只能通过Secure CRT的ssh登陆(估计原因是1521端口被封)。在这种情况下要select数据

就只能先ssh到远程服务器,然后运行sqlplus了。

登陆进sqlplus以后,执行select语句,英文都是正常的,但中文全都是????。

问题解决:

首先,确定问题的原因所在:是字符集的问题是肯定的了,但问题是那里的字符集设置有错误。

在sh下# locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_MONETARY="zh_CN.GB18030"
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=

这些值都是可以正确显示中文的。应该不是操作系统字符集的问题。

那么肯定就是Oracle字符集设置的问题了。于是就联想到导出数据库时:EXP-00091错误也是由于字符集环境设置的问题。

sh下执行$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

再进入sqlplus查询,中文果然显示正常了。

至此,问题顺利解决。

使用sqlplus的一些窍门:

★ 由于sqlplus对行宽的设置比较小,所以查出来的记录的列名和值自动折行,都挤在一个非常小的宽度内,非常难看。

SQL> set linesize 32767

这样就把行宽设置为最大。在sqlplus的范围内一般不会自动折行了。

但由于Secuer CRT 也有行宽的设置,所以还是会堆在一起。这个问题比较简单。

设置Secuer CRT 行宽,或把结果粘贴Editplus中,就一行是一行的显示了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值