Oracle字符集的基本知識

2021-09-30 15:06:52 字數 2675 閱讀 1856

1. oracle 字符集定義

oracle 字符集:按照特定的字元編碼方案,對一組特定的字元,符號,分別賦予不同數值編碼的集合。

oracle的字符集命名遵循以下命名規則:

即: 《語言》《位元位數》《編碼》

例如:1. us7ascii其中us代表america地區,7位,ascii字元編碼。它是 oracle資料庫最早支援的編碼方案

2. zhs16gbk 表示採用gbk編碼格式、16位(兩個位元組)簡體中文本元。2個位元組存放乙個漢字。

3. zhs16cgb231280 表示採用cgb231280編碼格式、16位(兩個位元組)簡體中文本元。2個位元組存放乙個漢字。

4. al32utf8 其中al代表all,指適用於所有語言。32位,3個位元組存放乙個亞洲語言字元。utf-8,8位unicode編碼方式。

5. af16utf16 其中af代表all fix, 適用於所有語言。16位,所有的字元以2個位元組存放。utf-16,16位unicode編碼方式。

2. 字元編碼方案

2.1 單位元組編碼

單位元組編碼有7位字符集和8位的字符集。特點是,每個字元用乙個位元組表示。

1)單位元組7位字符集,最常用的字符集為us7ascii。

2)單位元組8位字符集,適合於歐洲大部分國家 例如:we8iso8859p1(西歐、8位、iso標準8859p1編碼)

2.2 多位元組編碼

多位元組編碼有變長多位元組編碼和定長多位元組編碼。

1)變長多位元組編碼,它是指某些字元用乙個位元組表示,某些字元可以用2個或多個位元組表示。例如,在一段文字中,既有歐美字元,也有亞洲語言字元,此時為了支援對亞洲語言的支援,我們需要用變長多位元組編碼。總之,變長多位元組編碼常用於對亞洲語言的支援, 例如日語、漢語、印地語等。常用的編碼有:al32utf8,zhs16cgb231280。

例如:oracle資料庫指定了al32utf8字符集,並且建立了乙個varchar(20)字段。如果要存放漢字的話,能存放幾個呢?

由於指定了al32utf8字符集,因此,3個位元組存放乙個漢字。此外,建立了varchar(20)字段,表示varchar型別字段,最多能儲存20個位元組的漢字。因此我們可以推斷出,這個欄位最多能存放6個漢字。

2)定長多位元組編碼,每乙個字元都使用固定長度位元組的編碼方案,僅用於國家字符集。目前oracle唯一支援的定長多位元組編碼是af16utf16。

3. unicode 編碼

unicode 編碼涵蓋了全世界所有已知字元的編碼,是一種變長或多長的多位元組編碼方式。換句話說,它支援單位元組和多位元組的編碼方式。目前unicode有3.0版本和5.0版本。unicode 5.0相比unicode3.0 ,又增加了一些新的補充字元。oracle unicde 編碼方式有兩類:乙個是utf-8, 另乙個是utf-16。

1) utf-8是unicode 8位的編碼方式,它是一種變長多位元組的編碼,這種編碼方式可以用1,2,3個位元組來表示乙個unicode字元。例如:al32utf8,utf8、utfe。

2) utf-16是unicode 16位的編碼方式,它是一種定長多位元組的編碼,這種編碼只能用2個位元組來表示乙個unicode字元。例如:af16utf16。

4. 字符集超級

當一種字符集(字符集a)的編碼數值

包含所有

另一種字符集(字符集b)的編碼數值,並

且兩種字符集相同編碼數值代表相同的字元時,則字符集a是字符集b的超級,或稱

字符集b是字符集a的

子集。oracle8i和oracle9i官

方文件資料中備

有子集-超級對照表(subsetsupersetpairs),例如:we8iso8859p1是we8m

swin1252的

子集。由於us7ascii是最早的oracle資料庫編碼格式,因此有許

多 字符集是us7ascii的超集,例如we8iso8859p1、zhs16cgb231280、zhs16gbk都是us7ascii的超集。

5. oracle資料庫字符集(oracle伺服器端字符集)

oracle伺服器端字符集是在建立資料庫時候指定的,在建立後通常不能更改。在建立資料庫時,可以指定庫字符集和國家字符集。

1)庫字符集,它是oracle基本的字符集,它支援單位元組字符集,變長多位元組字符集。作用是:

2)國家字符集,它是oracle附加的字符集,其目的是為了增加oracle 字元的處理能力。它解決了nchar等型別的定長多位元組的編碼的資料支援,然而oracle的基本字符集並不能支援這點。國家字符集在oracle9i中進行

了重新定義,

只能在unicode編碼中的af16utf16和utf8 中選擇,

預設值是af16utf16。作用是:

6. 客戶端字符集

客戶端的字符集,是客戶端定義的字元資料的編碼方式。對所有來自客戶端和發自客戶端的字元資料均使用客戶端定義的字元編碼方式。客戶端可以

看作是能與資料庫

直接連線的

各種應用,如pl/sql.imp/exp等。在oralce裡,客戶端字符集是通過nls_lang引數設定的。

Oracle 基本知識

乙個表空間只能屬於乙個資料庫 每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 每個資料庫最少有乙個表空間 system表空間 建立system表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率,只應存放資料字典 每個資料庫最少有兩個聯機日誌組,每組最少乙個聯機日誌檔案 乙個資料...

Oracle 基本知識

乙個表空間只能屬於乙個資料庫 每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 每個資料庫最少有乙個表空間 system表空間 建立system表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率 每個資料庫最少有兩個聯機日誌檔案 乙個資料檔案只能屬於乙個表空間 乙個資料檔案一旦被...

Oracle 基本知識

oracle 文章摘要 oracle 基本知識。正文 oracle 基本知識 乙個表空間只能屬於乙個資料庫 每個資料庫最少有乙個控制檔案 建議3個,分別放在不同的磁碟上 每個資料庫最少有乙個表空間 system表空間 建立system表空間的目的是盡量將目的相同的表存放在一起,以提高使用效率 每個資...