首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 數據庫字符集轉換實戰技巧

     編輯:Oracle 資料庫基礎

字符集選型原則

資料庫建立後字符集理論上不可變。選型需滿足:資料庫字符集為所有客戶端字符集的超集,且應為作業系統本地字符集的超集。

NLS_LANG 參數結構

NLS_LANG = language_territory.charset
-- 三部分任意組合,例:
AMERICAN_AMERICA.US7ASCII
JAPANESE_JAPAN.JA16EUC
  • language:服務端訊息語言
  • territory:日期/數字格式
  • charset:字符集

常用子參數

  • NLS_DATE_FORMAT、NLS_DATE_LANGUAGE、NLS_NUMERIC_CHARACTERS
  • NLS_CURRENCY、NLS_ISO_CURRENCY、NLS_SORT

修改 NLS_LANG 方法 (需 SYS 權限)

-- 1. 以 SYS 登入
-- 2. 查看當前值
SELECT * FROM PROPS$;

-- 3. 修改語言
UPDATE PROPS$ SET VALUE$='SIMPLIFIED CHINESE' WHERE NAME='NLS_LANGUAGE';
COMMIT;

實際應用場景

場景 1:C/S 架構,雙端字符集不同

  • Windows 95/98:修改註冊表 HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\NLS_LANG
  • Unix:直接進資料庫修改 (同上 SQL)

場景 2:異構字符集間 EXP/IMP 遷移

  1. 按場景 1 修正 IMP 端字符集設置
  2. Windows 仍需同步修改註冊表
  3. 三個子參數 (語言_地區.字符集) 必須完整一致
  4. 單/雙字節字符集互轉不可通過修改字符集實現,需用 SQL*Loader 文本中轉或 Access/FoxPro 等工具轉換

避坑指南

  • 字符集轉換僅支援子集 → 超集 (如 US7ASCII → ZHS16GBK)
  • ZHS16GBK ↔ ZHS16CGB231280 無包含關係,官方不支援互轉
  • 修改前必備份,生產環境建議停機維護窗口操作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved