中文顯示異常核心原因:**字符集設置不當**。字符集用於適應多語言顯示,常見中文字符集:ZHS16CGB231280、US7ASCII、WE8ISO8859P1。需三方一致:
V$NLS_PARAMETERS)oracle.ini;2.0+:Windows註冊表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG)徵兆:資料庫存正確,客戶端顯示亂碼。
解法:調整客戶端字符集與伺服器一致。
SELECT * FROM V$NLS_PARAMETERS;
-- NLS_CHARACTERSET US7ASCII
NLS_LANG=AMERICAN_AMERICA.US7ASCIIoracle.ini徵兆:無論客戶端如何設定,中文皆亂碼。
三種解法:
CONNECT / AS SYSDBA
CREATE DATABASE CHARACTER SET US7ASCII; -- 會報ORA-01031但實際已生效
-- 隨後IMP導入資料
SHUTDOWN; STARTUP; -- 字符集自動復原,中文正常顯示
徵兆:即使後修正客戶端字符集,已輸入資料仍亂碼。
解法:結合場景2方案,重導正確字符集資料;已錯誤寫入資料通常無法恢復,需從源頭重導。
字符集一致性是中文正確顯示的基石,部署前規劃、遷移中驗證、運行中監控,三階段把關。