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

Oracle 字元集構成解析:命名規則、Unicode 演進與國家字元集差異

     編輯:Oracle 資料庫基礎

字元集發展脈絡

  • ASCII (7-bit, 128 字元) → 基礎英文
  • EBCDIC (IBM 大型機) → 與 ASCII 不相容編碼值
  • 多位元組編碼 (DBCS/MBCS):亞洲語系需求 → GB2312 (1981)、Big5、Shift-JIS、EUC-KR
  • 擴展標準:GBK (GB2312 擴展, 20902 字)、GB18030-2000 (27484 漢字 + 少數民族文字)
  • 統一碼:ISO 10646 + Unicode Consortium 合併 → Unicode 2.0 起共用碼位,現行 Unicode 15.x

Oracle 字元集命名規則

格式:<語言/區域><位元數><標準名稱>[S|C]

範例語言/區域位元數標準名稱備註
US7ASCIIUS7-bitASCII單位元組
WE8ISO8859P1WE (Western Europe)8-bitISO8859P1單位元組歐洲語系
ZHS16GBKZHS (Simplified Chinese)16-bitGBK雙位元組簡中
ZHT16BIG5ZHT (Traditional Chinese)16-bitBIG5雙位元組繁中
ZHS16CGB231280ZHS16-bitGB2312801980 標準
AL32UTF8AL (All)32-bit (UTF-8 變長)UTF8**不符合常規命名**
UTF8--UTF8舊版 UTF-8 實作
UTFE--UTF-EBCDICEBCDIC 平台專用
AL16UTF16AL16-bit (UTF-16 固定雙位元組)UTF16**僅作國家字元集**

NLS_LANG 設定範例

SET NLS_LANG=AMERICAN_AMERICA.UTF8
SET NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

格式:<語言>_<地區>.<字元集>,三者必須一致,否則產生隱性轉換與亂碼。

資料庫字元集 vs 國家字元集

維度資料庫字元集國家字元集
用途CHAR、VARCHAR2、CLOB、LONG、表/欄名、PL/SQL 變數、SQL/PLSQL 原始碼NCHAR、NVARCHAR2、NCLOB
設定時機CREATE DATABASE 時指定,**建立後不可變** (12c+ 可用 DMU 遷移)CREATE DATABASE 時指定,亦不可變
預設值視安裝選項 (常為 AL32UTF8 或 WE8MSWIN1252)10g+ 預設 AL16UTF16

Oracle 支援的 Unicode 字元集演進

字元集版本範圍Unicode 版本編碼狀態
AL24UTFFSS7.2 ~ 8.x1.1UTF-8 變體9i 起不支援
UTF88.0 ~ 10g2.1 (8.0~8.1.6) / 3.0 (8.1.7~10g)CESU-8 (非標準 UTF-8)相容性保留
UTFE8.0 ~同 UTF8UTF-EBCDICEBCDIC 平台專用
AL32UTF89i ~ 23c3.0 (9i) → 4.0.1 (10g) → 最新**標準 UTF-8****新建資料庫首選**
AL16UTF169i ~同步更新UTF-16BE**僅作國家字元集**

關鍵遷移提醒

  • ZHS16GBK **非** ZHS16CGB231280 嚴格超集:部分漢字編碼值不同,直接轉換會產生錯誤字元。
  • 遷移至 Unicode 唯一正規路徑:**Database Migration Assistant for Unicode (DMU)** (12c+ 內建),掃描 → 清洗 → 轉換 → 驗證全流程圖形化。
  • 新建資料庫**強烈建議 AL32UTF8 + AL16UTF16**,支援全球語言、避免字元集轉換效能損耗。
  • 舊版 UTF8 非標準 UTF-8 (CESU-8),補充字元平面 (Emoji、罕見漢字) 會編碼為 6 位元組而非 4 位元組,**新專案禁用**。

結語

字元集是資料庫的「基因」,決定一生。搞清命名規則、Unicode 演進、資料庫/國家字元集分工,配合 DMU 遷移工具,才能在全球化應用中行穩致遠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved