ZHS16GBKSQL*Plus (命令列) 顯示正常。SQL> SELECT USERENV('LANGUAGE') FROM DUAL;
SIMPLIFIED CHINESE_CHINA.ZHS16GBKHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG = AMERICAN_AMERICA.ZHS16GBK
SQL*Plus 為 Native OCI 程式,讀取 NLS_LANG 環境變數/註冊表決定字元集轉換。SQL Plus Worksheet 為 **Java 應用程式** (OEM 組件),**完全忽略 NLS_LANG**,改由自身配置檔決定 JVM 字元集。這是 Oracle 8i 將管理工具大量改寫為 Java 後引入的已知問題。
$ORACLE_HOME\sysman\config\dbaPPScfg.properties# 註解):
# SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
↓ 修改為
SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
# SQLPLUS_SYSTEMROOT=c:\\WINNT40
↓ 修改為實際作業系統目錄,例:
SQLPLUS_SYSTEMROOT=d:\\WINNT
注意:SQLPLUS_SYSTEMROOT 僅 Windows 需設定;Unix/Linux 不需此項。若 Windows 未設,OEM 連線會報 ORA-12560 或 ORA-12545。
AL32UTF8),請將 SQLPLUS_NLS_LANG 對應修改為 AMERICAN_AMERICA.AL32UTF8。