Oracle字符集引發文字化問題 一

2021-07-25 03:58:29 字數 2660 閱讀 1559

之前就遇到

過幾次由於

oracle

字符集引

發文字化

問題,稍微整理一下,作

為備忘。若有不

對的地方,請指出

。 所謂

的文字化

問題,是指在根據文字

編碼將文字

轉換為相應二

進製編碼過程中,發生的

轉換失敗(

轉換後的二經制在

對應的字元

編碼中並不存在)問題。

由於字符集

歷史以及很多

軟體內部

處理的關係,很

遺憾文字化導致的

問題是時有

發生的。

文字化問題發生

時,由於在整個文字化

轉換過程中有多個

軟體參與的原因,要定位

問題發生的位置並予以

處理,往往是需要花一定

時間的。 本文

簡單說明一下

對oracle

內部文字化的一些理解。

oralce

的文字編碼

究竟什麼是文字編碼?

計算機內部,所有的資料都是以0、

1的二進位制序列表示(

這裡指的並不是文字對應的

計算機內碼,

轉換為內碼的

過程本文不做過多

說明)。

文字也是一樣,在

計算機內部以某種形式的二

進製序列被表示。那麼某個文字究竟以哪種二

進製序列被表示,

這個表示

規則就稱作[文字

編碼]。

由於實際工作過

程中接觸的多是日文系

統,所以下面以常

見的日文

編碼為例進行

說明。 對

於日文來

說,目前被廣泛使用的

編碼也有

好幾種。根據文字

編碼的不同,同一文字的二

進製序列也不同。

文字編碼

文字[あ]對應的二進位制序列

shift_jis

0x82a0

euc_jp

0xa4a2

uft-8

0xe38182 表

1-不同文字編碼下

對應的文字[あ

]的二進位制序列(16進

制表示)

日文存在的數種字元編碼,根據作業系統的不同,主要適用的字元編碼也有所不同。比如,

windows

系列主要以

shift_jis

為主,而

unix

系列的作業系統則以

euc_jp

或unicode

為主。正因為如此,當文字在不同的作業系統之間傳遞的時候,就需要進行文字編碼的變換。這裡的變換是指,從某種文字編碼的二進位制序列變換為另一種文字編碼中對應的二進位制序列的過程。

例如,把文字[あ

]從shift_jis

編碼轉換為

euc_jp

編碼的時候,其實也就是把二進位制序列

0x82a0

轉換為0xa4a2

的過程。這種變換,是依照事先規定好的變換表來進行的。變換表中記載了,變換前二進位制編碼和變換後二進位制編碼的對應關係。 ※

也有某些例外,不需要變換表,而是根據算數運算進行變化的。

但是,實際上也存在

[在某種文字編碼中存在,在另一種文字編碼中不存在

]的文字。

例如,windows

環境下使用的

shift_jis

編碼中的[(

1)]文字,在

euc_jp

編碼中一般是不存在的。

oracle

作為一款軟體,搭載在各種不同的作業系統之上,根據系統文字編碼的不同也需要發生也需要發生文字編碼的轉換。這時候就可能發生文字化的問題。 對於

oracle

來說,相關的字符集可以問題兩部分。

將資料儲存到資料庫中時使用的文字編碼,用資料庫字符集來表示。

客戶端環境使用的文字編碼,用

[nls_lang]

來表示,

資料庫字符集,是在建立資料庫的時候指定,決定資料最終以怎樣的形式儲存到資料庫中,也就是資料庫檔案中。

而客戶端環境往往是相對複雜的,可能被部署在各行中各樣的作業系統之上,為了能保證不同的作業系統之上的客戶端都能正常動作,所以提供了

資料庫字符集和

nls_lang

資料庫字符集

建立資料庫時,需要指定乙個資料庫字符集。通常日語環境下,資料庫字符集在資料建立之後是不能變更的。下面表

2就是日語環境下常見的字符集。

資料庫字符集

對應的文字編碼

備註ja16sjis

shift_jis

ja16euc

euc_jp

ja16sjistilde

shift_jis

ja16euctilde

euc_jp

al32utf8

utf-8 表

2日文環境下常見的資料庫字符集



mysql文字字符集 MySQL字符集

字符集 1.什麼是字符集 字符集 是乙個系統支援的所有抽象字元的集合。字元是各種文字和符號的總稱,包括各國家文字 標點符號 圖形符號 數字等。最早的字符集 ascii碼 中國的字符集 gbk,utf8,gbk2312 日本字符集 shift jis 南韓字符集 euc kr 萬國編碼 unicode...

oracle 檢視字符集與修改字符集

oracle字符集是乙個位元組資料的解釋的符號集合,有大小之分,有相互的包容關係。oracle 支援國家語言的體系結構允許你使用本地化語言來儲存,處理,檢索資料。它使資料庫工具,錯誤訊息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平台。影響oracle資料庫字符集最重要的引數是nl...

oracle 檢視字符集與修改字符集

oracle字符集 oracle字符集是乙個位元組資料的解釋的符號集合,有大小之分,有相互的包容關係。oracle 支援國家語言的體系結構允許你使用本地化語言來儲存,處理,檢索資料。它使資料庫工具,錯誤訊息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平台。影響oracle資料庫字符...