首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 8i SQL*Plus Worksheet 亂碼解決:修改 dbappscfg.properties 指定 NLS_LANG

     編輯:Oracle 資料庫相關知識

問題現象

Oracle 8i 安裝選用簡體中文 ZHS16GBK,SQL*Plus 正常,但 **SQL*Plus Worksheet (Java GUI)** 介面與查詢結果皆顯示亂碼。

根因分析

  • 非 Java 工具 (SQL*Plus) 讀取註冊表/環境變數 NLS_LANG
  • Java 工具 (Worksheet, Enterprise Manager) **忽略 NLS_LANG**,需在專屬設定檔指定
  • 8i 大量採用 Java 介面,此問題普遍

解決步驟

  1. 找到設定檔:$ORACLE_HOME/sysman/config/dbappscfg.properties
  2. 編輯檔案,找到並修改兩項:
    #SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    → SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    
    #SQLPLUS_SYSTEMROOT=c:\WINNT40
    → SQLPLUS_SYSTEMROOT=d:\WINNT   (依實際 OS 安裝路徑修改,僅 Windows 需設)
  3. 儲存檔案,重新啟動 SQL*Plus Worksheet

驗證

介面選單、錯誤訊息、查詢結果中文皆正常顯示。

補充說明

  • 若未修改 SQLPLUS_SYSTEMROOT,連線時可能出現 ORA-12560 或 TNS-12560 等通訊錯誤
  • Unix/Linux 平台無需設定 SQLPLUS_SYSTEMROOT
  • 9i/10g+ 同樣適用,檔案位置可能在 $ORACLE_HOME/jlib/ 或 $ORACLE_HOME/sysman/ 下
  • 根本解決:確保 **資料庫字元集、客戶端 NLS_LANG、應用程式設定** 三者一致

通用 NLS 除錯清單

  1. 資料庫:SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';
  2. Session:SELECT * FROM NLS_SESSION_PARAMETERS;
  3. Client 註冊表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG
  4. Java 應用設定檔 (如本文)
  5. 應用程式連線字串是否指定 CharacterEncoding
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved