回覆列表
  • 1 # 使用者4295532320074

    字符集的設定不當是影響ORACLE資料庫漢字顯示的關鍵問題。 字符集是ORACLE為適應不同語言文字顯示而設定的。用於漢字顯示的字符集主要有ZHS16CGB231280、ZHS16GBK、US7ASCII和UTF-8等。字符集同時存在於伺服器端和客戶端。伺服器端字符集是在安裝ORACLE時指定的,字符集登記資訊儲存在ORACLE資料庫字典的V$NLS_PARAMETERS表中;而客戶端字符集是在系統登錄檔(WINDOWS系統)或在使用者的環境變數(UNIX系統)中設定的。 常見的漢字亂碼問題及解決方案: 要在客戶端正確顯示ORACLE資料庫中的漢字資訊,首先必須使客戶端的字符集與伺服器端的字符集一致;其次是載入到ORACLE資料庫的資料字符集必須與伺服器字符集一致。據此,漢字顯示亂碼的問題大致可以分為以下幾種情況: (1)客戶端字符集與伺服器端字符集不同,伺服器端字符集與載入資料字符集一致。這種情況是最常見的,只要把客戶端的字符集設定正確即可。具體解決方案: 第一步:查詢V$NLS_PARAMETERS得到服務端的字符集:SQL>SELECT * FROM V$NLS_PARAMETERS; PARAMETER VALUE NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA NLS_CHARACTERSET ZHS16GBK 第二步:根據服務端的字符集設定客戶端的字符集,設定方法參見客戶端的字符集的設定方式。以UNIX系統為例,可在當前使用者的profile檔案中增加如下兩行: NLS_LANG=SIMPLIFIED Chinese_CHINA.ZHS16GBK export NLS_LANG (2)客戶端字符集與伺服器端字符集相同,伺服器端字符集與載入資料字符集不一致。這種情況一般發生在ORACLE版本升級或重新安裝資料庫時選擇了與原來資料庫不同的字符集,而恢復載入的備份資料仍是按原字符集卸出的場合。另一種情況是載入從其它使用不同字符集的ORACLE資料庫卸出的資料。在這兩種情況中,不管客戶端字符集與伺服器端字符集是否一致都無法正確顯示漢字。具體解決方案: 方案一:按服務端字符集的修改方法修改服務端字符集與載入資料字符集一致,然後匯入資料。 方案二:利用資料格式轉儲,避開字符集帶來的問題。即先將載入資料倒入到與其字符集一致的資料庫中,然後再將資料要麼按文字格式匯出(資料量較小的情況下),要麼透過第三方工具(如POWER BUILDER,ACCESS,FOXPRO等)倒出資料,最後將倒出的資料匯入到目標資料庫中。 (3)客戶端字符集與伺服器端字符集不同,服務端字符集與輸入資料字符集不同。這種情況是在客戶端字符集與伺服器端字符集不一致時,從客戶端輸入了漢字資訊。輸入的這些資訊即便是把客戶端字符集更改正確,也無法顯示漢字。解決方案:修改客戶端字符集與服務端字符集一致後,重新輸入資料。 5 結束語 根據ORACLE官方文件的說明,一旦資料庫建立後,資料庫的字符集是不能改變的。因此,提前考慮自己的資料庫將選用哪一種字符集是十分重要的。資料庫字符集選擇的一般規則是將資料庫字符集設定為作業系統本地字符集的一個超集,同時資料庫字符集也應該是所有客戶字符集的超集。如同樣是中文環境,在選擇ZHS16CGB231280還是ZHS16GBK時,我們更多的情況是選擇ZHS16GBK,因為它包含了ZHS16CGB231280字符集。

  • 中秋節和大豐收的關聯?
  • 放在耳朵裡的助聽器上面有個孔,是幹什麼用的?