在使用 Oracle PL/SQL Developer 進行開發操作時,中文亂碼是困擾許多開發人員的常見問題。本文提供系統性的解決方案,從根本上解決字元編碼不匹配導致的顯示異常。
NLS_LANG 格式為 language_territory.charset,包含三個組成部分:
核心原則:客戶端字元集必須與伺服器端字元集保持一致。
SELECT * FROM v$nls_parameters;
重點關注 NLS_CHARACTERSET 與 NLS_LANGUAGE 參數值。
設定系統環境變數 NLS_LANG,例如資料庫字元集為 ZHS16GBK 時:
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
或對應繁體中文環境:
NLS_LANG=TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950
若環境變數不生效,可修改登錄檔:
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_XE\NLS_LANG
將值設定為與步驟 2 相同的字串。
| 資料庫字元集 | 建議 NLS_LANG 設定 |
|---|---|
| ZHS16GBK | SIMPLIFIED CHINESE_CHINA.ZHS16GBK |
| ZHT16MSWIN950 | TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950 |
| AL32UTF8 | AMERICAN_AMERICA.AL32UTF8 |