首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

影響 Oracle 中文顯示的字元集問題分析與解決

     編輯:Oracle 資料庫基礎

原因分析

字元集設定不當是影響 Oracle 中文顯示的關鍵。常用中文字元集:ZHS16CGB231280、US7ASCII、WE8ISO8859P1。字元集不僅需在伺服器端存在,用戶端也必須註冊。伺服器端字元集在安裝時指定,登記資訊存於 V$NLS_PARAMETERS;用戶端視 SQL*Net 版本不同,登記於 oracle.ini(2.0 以下)或 Windows 登錄表(2.0 以上)。

要正確顯示中文,必須:

  1. 伺服器端字元集與用戶端字元集一致
  2. 載入資料的字元集與伺服器指定字元集一致

三種常見異常情況:

  1. 伺服器字元集與用戶端不同,但與載入資料一致 → 修正用戶端設定
  2. 伺服器字元集與用戶端相同,但與載入資料不一致 → 版本升級或跨字元集匯入導致
  3. 伺服器、用戶端、輸入資料字元集皆不一致 → 客戶端與伺服器不一致時輸入中文資料

解決方案

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

假設伺服器使用 US7ASCII。

  1. 查看伺服器字元集:SELECT * FROM V$NLS_PARAMETERS,找 NLS_CHARACTERSET。
  2. 配置用戶端:
    • 安裝用戶端軟體時指定相同字元集
    • 或修改登錄:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG 設為 AMERICAN_AMERICA.US7ASCII(SQL*Net 2.0 以上);SQL*Net 2.0 以下編輯 oracle.ini。

2.2 強制載入資料字元集與伺服器一致

假設原資料為 US7ASCII,現伺服器為 WE8ISO8859P1。

  1. 重裝 Oracle:安裝時選擇原資料字元集(US7ASCII),再匯入。僅適用空庫或同字元集資料。
  2. 強制修改伺服器字元集:
    SQL> CREATE DATABASE CHARACTER SET US7ASCII;
    -- 會報 ORA-01031 權限不足,但實際已修改成功
    -- 隨後 IMP 匯入資料
    -- 匯入完成後 SHUTDOWN/STARTUP,字元集會復原,中文可正確顯示
    
  3. 資料格式轉儲繞過字元集限制:先載入相同字元集伺服器,用工具轉為 FoxBase/Access 格式,再轉入目標 Oracle。工具如 PowerBuilder Pipeline、Access 匯入/匯出。

2.3 比對字元集替換中文

針對情況三,無完美解法,只能先匹配字元集,再依原輸入中文特徵碼替換中文字元。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved