PL/SQL Developer 顯示中文亂碼,本質是客戶端字符集與數據庫字符集不匹配。本文提供「查庫字符集 → 設環境變量 → 重啟工具」三步標準化修復流程,並解析 NLS_LANG 三段式結構與常見編碼對照表。
Oracle 數據庫字符集(如 ZHS16GBK、AL32UTF8)與 PL/SQL Developer 進程環境變量 NLS_LANG 不一致,導致字節流解碼錯誤。
SELECT USERENV('LANGUAGE') FROM DUAL;
-- 典型輸出:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
-- 或:AMERICAN_AMERICA.AL32UTF8
NLS_LANGSIMPLIFIED CHINESE_CHINA.ZHS16GBKNLS_LANG =_ . │ │ │ │ │ └─ 字符集(關鍵):ZHS16GBK, AL32UTF8, UTF8, US7ASCII │ └─ 地區:CHINA, AMERICA, TAIWAN └─ 語言:SIMPLIFIED CHINESE, TRADITIONAL CHINESE, AMERICAN
| 數據庫字符集 | NLS_LANG 推薦值 | 適用場景 |
|---|---|---|
| ZHS16GBK | SIMPLIFIED CHINESE_CHINA.ZHS16GBK | 簡體中文主流,Windows 客戶端 |
| AL32UTF8 | AMERICAN_AMERICA.AL32UTF8 | Unicode 全字符集,推薦新建庫 |
| UTF8 | AMERICAN_AMERICA.UTF8 | 舊版 UTF8(僅 BMP),不支援 Emoji |
| US7ASCII | AMERICAN_AMERICA.US7ASCII | 純英文環境 |