字元集設定不當是影響 Oracle 中文顯示的關鍵。常用中文字元集:ZHS16CGB231280、US7ASCII、WE8ISO8859P1。字元集不僅需在伺服器端存在,用戶端也必須註冊。伺服器端字元集在安裝時指定,登記資訊存於 V$NLS_PARAMETERS;用戶端視 SQL*Net 版本不同,登記於 oracle.ini(2.0 以下)或 Windows 登錄表(2.0 以上)。
要正確顯示中文,必須:
三種常見異常情況:
假設伺服器使用 US7ASCII。
SELECT * FROM V$NLS_PARAMETERS,找 NLS_CHARACTERSET。HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG 設為 AMERICAN_AMERICA.US7ASCII(SQL*Net 2.0 以上);SQL*Net 2.0 以下編輯 oracle.ini。假設原資料為 US7ASCII,現伺服器為 WE8ISO8859P1。
US7ASCII),再匯入。僅適用空庫或同字元集資料。SQL> CREATE DATABASE CHARACTER SET US7ASCII;
-- 會報 ORA-01031 權限不足,但實際已修改成功
-- 隨後 IMP 匯入資料
-- 匯入完成後 SHUTDOWN/STARTUP,字元集會復原,中文可正確顯示
針對情況三,無完美解法,只能先匹配字元集,再依原輸入中文特徵碼替換中文字元。