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數據庫的字符集為'US7ASCII'。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM