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

Oracle 客戶端與 PL/SQL Developer 中文亂碼徹底解決:NLS_LANG 設定指南

     編輯:Oracle 資料庫相關知識

問題成因

Oracle 客戶端與伺服器字元集不一致導致中文顯示亂碼。核心解決方式:統一設定 NLS_LANG 環境變數與登錄值為 語言_地區.字元集 格式,且必須與伺服器端 NLS_DATABASE_PARAMETERS 一致。

步驟 1:查詢伺服器端字元集設定

select * from nls_database_parameters
where parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

假設結果:

  • NLS_LANGUAGE = AMERICAN
  • NLS_TERRITORY = AMERICA
  • NLS_CHARACTERSET = ZHS16GBK

組合為:AMERICAN_AMERICA.ZHS16GBK

步驟 2:設定 Windows 環境變數

  1. 右鍵「我的電腦」→ 內容 → 進階系統設定 → 環境變數
  2. 系統變數區 → 新增/編輯 NLS_LANG
  3. 變數值:AMERICAN_AMERICA.ZHS16GBK

步驟 3:修改登錄表

  1. Win+R → regedit
  2. 定位:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
  3. 雙擊 NLS_LANG → 數值資料改為:AMERICAN_AMERICA.ZHS16GBK

步驟 4:64 位元系統找不到 ORACLE 登錄鍵?

64 位元 Windows 將 32 位元應用程式登錄導向 Wow6432Node:

  1. 檢查:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\
  2. 若仍無,手動建立 KEY_OraClient11g_home1 並新增字串值 NLS_LANG

步驟 5:PL/SQL Developer 專屬設定(綠色版/免安裝版)

若 PL/SQL Developer 放在 D:\Program Files\PLSQL Developer,可建立兩個 .reg 檔快速切換:

AMERICAN_10g.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"NLS_LANG"="AMERICAN_AMERICA.US7ASCII"

CHINESE_10g.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

雙擊執行對應 .reg 檔,重啟 PL/SQL Developer 即可生效。

步驟 6:驗證

select userenv('language') from dual;
-- 應顯示 AMERICAN_AMERICA.ZHS16GBK

select '中文測試' from dual;
-- 應正常顯示中文

常見字元集對照

字元集適用場景
ZHS16GBK簡體中文 Windows 環境(含繁體擴展)
ZHT16MSWIN950繁體中文 Windows 環境
AL32UTF8Unicode 國際化環境(推薦新系統)
US7ASCII純英文環境

注意事項

  • 修改後需重新啟動所有 Oracle 客戶端工具(PL/SQL Developer、SQL*Plus、SQL Developer 等)
  • 資料庫本身字元集建立後不可變更,僅能調整客戶端顯示設定
  • 若伺服器為 AL32UTF8,客戶端同樣設為 AMERICAN_AMERICA.AL32UTF8
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved