1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        Linux下Oracle sqlplus中文顯示亂碼的問題的解決

        發布時間:  2012/8/9 17:24:11

        在Windows下sqlplus完全正常,可是到Linux下,sqlplus中文顯示就出問題了,總是顯示“??”,這個問題又怎么解決呢?

        經過在網絡上查資料,以及嘗試,得到的解法如下:

        其實很簡單我們只要設置退出sqlplus,設置相應的環境變量NLS_LANG

        export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
        -
         

        為了下次不必重新設置,我們可以將其放在/home/Oracle/.bash_profile或/etc/profile中。重新進入sqlplus,但是發現原來在sqlplus中插入的數據中文還是顯示"??",不過你重新插入一條看看,是不是可以正常顯示中文了。

        另外,還找到了其它的資料,隨便的帖在下面,以備使用:

        在國內外大中型數據庫管理系統中,把Oracle作為數據庫管理平臺的用戶比較多。ORACLE   不論是數據庫管理能力還是安全性都是無可非議的,但是,它在漢字信息的顯示方面著實給中國用戶帶來不少麻煩,筆者多年從事ORACLE數據庫管理,經常收到周圍用戶和外地用戶反映有關ORACLE數據庫漢字顯示問題的求援信,主要現象是把漢字顯示為不可識別的亂碼,造成原來大量信息無法使用。本文將就這一問題產生的原因和解決辦法進行一些探討,供存在這方面問題的用戶朋友參考。

        ----   1、原因分析

        ----   通過對用戶反映情況的分析,發現字符集的設置不當是影響Oracle數據庫漢字顯示的關鍵問題。那么字符集是怎么一會事呢?字符集是ORACLE   為適應不同語言文字顯示而設定的。用于漢字顯示的字符集主要有ZHS16CGB231280,US7ASCII,WE8ISO8859P1等。字符集不僅需在服務器端存在,而且客戶端也必須有字符集注冊。服務器端,字符集是在安裝ORACLE時指定的,字符集登記信息存儲在ORACLE數據庫字典的V$NLS_PARAMETERS表中;客戶端,字符集分兩種情況,一種情況是sql*net   2.0以下版本,字符集是在windows的系統目錄下的oracle.ini文件中登記的;另一種情況是sql*net   2.0以上(即32位)版本,字符集是在windows的系統注冊表中登記的。要在客戶端正確顯示ORACLE   數據庫漢字信息,首先必須使服務器端的字符集與客戶端的字符集一致;其次是加載到ORACLE數據庫的數據字符集必須與服務器指定字符集一致。因此,把用戶存在的問題歸納分類,產生漢字顯示異常的原因大致有以下幾種:

        ----   1.   1服務器指定字符集與客戶字符集不同,而與加載數據字符集一致。

        ----   這種情況是最常見的,只要把客戶端的字符集設置正確即可,解決辦法見2.1。

        ----   1.   2服務器指定字符集與客戶字符集相同,與加載數據字符集不一致。

        ----   這類問題一般發生在Oracle版本升級或重新安裝系統時選擇了與原來服務器端不同的字符集,而恢復加載的備份數據仍是按原字符集卸出的場合,以及加載從其它使用不同字符集的ORACLE數據庫卸出的數據的情況。這兩種情況中,不管服務器端和客戶端字符集是否一致都無法顯示漢字。解決辦法見2.2。

        ----   1.3服務器指定字符集與客戶字符集不同,與輸入數據字符集不一致。

        ----   這種情況是在客戶端與服務器端字符集不一致時,從客戶端輸入了漢字信息。輸入的這些信息即便是把客戶端字符集更改正確,也無法顯示漢字。解決辦法見2.3。

        ----   2.解決辦法

        ----   下面將分別對上述三種情況給出解決辦法。為了敘述方便,假設客戶端使用WINDOWS95/98環境,并已成功地配置了TCP/IP協議,安裝了Oracle的sql*net,sql*pluse產品。

        ----   2.1   設置客戶端字符集與服務器端字符集一致

        ----   假設當前服務器端使用US7ASCII字符集。

        ----   (1)查看服務器端字符集

        ----   通過客戶端或服務器端的sql*plus登錄Oracle的一個合法用戶,執行下列SQL語句:

            SQL   >   select   *   from   V$NLS_PARAMETERS

        parameter            value

        NLS_LANGUAGE            AMERICAN

        NLS_TERRITORY         AMERICA

        ….                 ….

        NLS_CHARACTERSET          US7ASCII

        NLS_SORT              BINARY

        NLS_NCHAR_CHARACTERSET       US7ASCII

        ----   從上述列表信息中可看出服務器端Oracle數據庫的字符集為&acute;US7ASCII&acute;。

        ----   (2)按照服務器端字符集對客戶端進行配置

        ----   配置方法有兩種:

        安裝Oracle的客戶端軟件時指定

        ----   在安裝Oracle的客戶端產品軟件時,選擇與ORACLE服務端一致的字符集(本例為US7ASCII)即可。

        修改注冊信息的方法

        ----   根據Oracle   客戶端所選sql*net   的版本分為下列兩種情況:

        ----   a.   客戶端為   sql*net   2.0   以下版本

        ----   進入Windows的系統目錄,編輯Oracle.ini文件,用US7ASCII替換原字符集,重新啟動計算機,設置生效。

        ----   b.   客戶端為   sql*net   2.0   以上版本

        ----   在WIN98   下   運   行REGEDIT,第一步選HKEY_LOCAL_MACHINE,第二步選擇SOFTWARE,   第三步選擇   Oracle,   第四步選擇   NLS_LANG,   鍵   入   與服   務   器   端   相   同   的   字   符   集(本例為:AMERICAN_AMERICAN.US7ASCII)。

        ----   2.2   強制加載數據字符集與服務器端字符集一致

        ----   假設要加載數據從原Oracle數據庫卸出時的字符集為US7ASCII,當前ORACLE服務器字符集為WE8ISO8859P1。

        ----   下面提供三種解決方法:

        ----   (1)   服務器端重新安裝Oracle

        ----   在重新安裝Oracle   時選擇與原卸出數據一致的字符集(本例為US7ASCII)。

        ----   加載原卸出的數據。

        ----   這種情況僅僅使用于空庫和具有同一種字符集的數據。

        ----   (2)強行修改服務器端Oracle當前字符集

        ----   在用imp命令加載數據前,先在客戶端用sql*plus登錄system   DBA用戶,執行下列SQL語句進行當前Oracle數據庫字符集修改:

        SQL   >   create   database character   set   US7ASCII

        *   create   database   character   set   US7ASCII

           ERROR   at   line   1:

        ORA-01031:   insufficient   privileges

        ----   你會發現語句執行過程中,出現上述錯誤提示信息,此時不用理會,實際上Oracle數據庫的字符集已被強行修改為US7ASCII,接著用imp命令裝載數據。等數據裝載完成以后,shutdown   數據庫,再startup   數據庫,用合法用戶登錄ORACLE數據庫,在sql>命令提示符下,運行select   *   from   V$NLS_PARAMETERS,可以看到ORACLE數據庫字符集已復原,這時再查看有漢字字符數據的表時,漢字已能被正確顯示。

        ----   (3)利用數據格式轉儲,避開字符集限制

        ----   這種方法主要用于加載外來Oracle數據庫的不同字符集數據。其方法如下:

        ----   先將數據加載到具有相同字符集的服務器上,然后用轉換工具卸出為foxbase   格式或access格式數據庫,再用轉換工具轉入到不同字符集的Oracle數據庫中,這樣就避免了ORACLE字符集的困擾。目前數據庫格式轉換的工具很多,象power   builder5.0以上版本提供的pipeline,Microsoft   Access數據庫提供的數據導入/導出功能等。轉換方法參見有關資料說明。.

        ----   2.3匹配字符集替換漢字

        ----   對于1.3提到的情況,沒有很好的辦法,只能先把客戶端與服務器端字符集匹配一致后,根據原輸入漢字的特征碼替換漢字字符部分。


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线