zoukankan      html  css  js  c++  java
  • 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中,就一行是一行的显示了。

    参考资料:

    EXP--解決EXP-00091的方法

    发表人:vongates | 发表时间: 2005年二月19日, 14:22

    對一個DBA或需使用exp,imp的普通用戶來說,在我們做exp的過程中可能經常會遇到EXP-00091 Exporting questionable statistics.這樣的EXP信息,其實它就是exp的error message,它產生的原因是因為我們exp工具所在的環境變量中的NLS_LANG與DB中的NLS_CHARACTERSET不一致。但需說明的是,exp-91這個error message對所生成的dump檔沒有影響,生成的dump檔還可以正常的imp(個人體會,不知道有沒有錯),雖然它對我們的dump檔沒有影響,我個人還是不想它出現,大家也有同感吧, 。。下面我們就讓它消失吧。。我們一起來

    step 01 查看DB中的NLS_CHARACTERSET的值(提供兩種方法):


    select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'
    or
    select * from v$nls_parameters      where parameter='NLS_CHARACTERSET';
    SQL> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';

    PARAMETER              VALUE
    -----------------------  ----------------------------------------------
    NLS_CHARACTERSET    ZHT16BIG5

    step 02 根據step 01查出的NLS_CHARACTERSET(ZHT16BIG5)來設定exp的環境變量:


    WINNT> set NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5
    LINUX> export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5

  • 相关阅读:
    git---如何解决The authenticity of host can't be established.
    前端模板引擎artTemplate.js
    微信小程序
    小程序的项目结构设计
    拖拽插件SortableJS
    iscroll.js的简单使用方法
    头疼的闭包
    关于setTimeout的妙用前端函数节流
    webpack 加载动态图片
    在React中实现条件渲染的7种方法
  • 原文地址:https://www.cnblogs.com/lds85930/p/1240242.html
Copyright © 2011-2022 走看看