天天看點

oracle 中文亂碼解決辦法

到周圍使用者和外地使用者反映有關oracle資料庫漢字顯示問題的求援信,主要現象是把漢字顯示為不可識别的亂碼,造成原來大量資訊無法使用。本文将就這一 問題産生的原因和解決辦法進行一些探讨,供存在這方面問題的使用者朋友參考。

  ---- 1、原因分析

2.0以上(即32位)版本,字元集是在windows的系統系統資料庫中登記的。要在用戶端正确顯示oracle 資料庫漢字資訊,首先必須使伺服器端的字元集與用戶端的字元集一緻;其次是加載到oracle資料庫的資料字元集必須與伺服器指定字元集一緻。是以,把用 戶存在的問題歸納分類,産生漢字顯示異常的原因大緻有以下幾種:

  ---- 1. 1伺服器指定字元集與客戶字元集不同,而與加載資料字元集一緻。

  ---- 這種情況是最常見的,隻要把用戶端的字元集設定正确即可,解決辦法見2.1。

  ---- 1. 2伺服器指定字元集與客戶字元集相同,與加載資料字元集不一緻。

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

  ---- 1.3伺服器指定字元集與客戶字元集不同,與輸入資料字元集不一緻。

  ---- 這種情況是在用戶端與伺服器端字元集不一緻時,從用戶端輸入了漢字資訊。輸入的這些資訊即便是把用戶端字元集更改正确,也無法顯示漢字。解決辦法見2.3。

  ---- 2.解決辦法

  ---- 2.1 設定用戶端字元集與伺服器端字元集一緻

  ---- 假設目前伺服器端使用us7ascii字元集。

  ---- (1)檢視伺服器端字元集

  ---- 通過用戶端或伺服器端的sql*plus登入oracle的一個合法使用者,執行下列sql語句:

---- 從上述清單資訊中可看出伺服器端oracle資料庫的字元集為'us7ascii'。

原文轉自:http://www.ltesting.net