程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫的字符集實際應用

Oracle數據庫的字符集實際應用

編輯:Oracle數據庫基礎

假如你對Oracle數據庫的字符集的實際應用不是很了解的話,下面的文章就是對Oracle數據庫的字符集的相關內容的具體介紹,其實我個人認為Oracle數據庫的字符集是數據庫操作的一種常用手段。

如何選擇合適的Oracle數據庫的字符集

數據庫需要存儲的數據類型是字符集選擇的首要考慮目標。

對於只存儲英文信息的數據庫等來說,一般采用US7ASCII或WE8ISO8859P1等單字節的字符集就比較合適,在性能和空間上也是最優,

同樣,存儲了中文信息的數據庫,如果采用單字節的字符集,也是不合適的。在這種情況下,Oracle數據庫的字符集雖然是US7ASCII或WE8ISO8859P1編碼,但裡面存儲的數據編碼實際上卻是另外的編碼格式,這種不一致的情況很容易引起問題,建議不要這樣使用。Oracle提供了很多種類的字符集供客戶選擇,就是要滿足各種文字不同的編碼需要。

字符集的選擇需要優先考慮應用程序的需要。

目前出於國際化的需要,軟件需要可以對不同的語言文字進行處理,尤其一個系統中需要容納多種語言文字的時候,一般都會采用Unicode這樣的通用解決方案,即使會有一些空間和運行效率的損失也是值得的。此時數據庫字符集建議可以采用AL32UTF8或UTF8編碼,一種比較理想的模式就是由程序負責編碼格式的轉換,而Oracle數據庫只提供一個透明的數據存儲,

客戶在應用程序中輸入數據,此時數據的編碼格式是由客戶操作系統的區域及語言設置決定的,如在簡體中文XP的環境下,輸入的中文編碼屬於GBK編碼。在客戶輸入結束後,程序首先判斷客戶的本地環境,並把編碼轉換成UNICODE,並通過NET傳送到服務器端。

由於客戶端與服務器數據庫的字符集均為UTF8格式,Oracle在傳送過程中不會進行字符轉換,直接把數據按UTF8格式存儲到數據庫中。查詢時是一個反向的過程,應用程序從數據庫中取出UTF8編碼的數據,再由應用程序根據客戶的本地環境,把UTF8編碼的數據轉換成客戶本地的編碼格式,最後把結果數據顯示給客戶。

此方案的關鍵在於應用程序要能很好的支持UNICODE編碼,編碼的轉換由應用程序來負責,Oracle數據庫只是提供了一個數據存儲功能。

對於部分程序來說,由於對UNICODE支持不夠,沒有提供編碼的轉換功能,則可以使用Oracle提供的字符集轉換功能來實現同樣的目的。客戶在應用程序中輸入數據,此時數據的編碼格式是由客戶操作系統的區域及語言設置決定的,如在簡體中文XP的環境下,輸入的中文編碼屬於GBK編碼。

在客戶輸入結束後,程序直接把數據並通過NET傳送到服務器端。由於客戶端與服務器數據庫的字符集不一致,因此Oracle會把客戶端的編碼轉換成UTF8格式,再把數據按UTF8格式存儲到數據庫中。這種方案的優點就是程序可以不用支持UNICODE,由Oracle數據庫自動進行轉換。

由於數據庫的字符集為UTF8,是其它字符集的超集,因此在轉換過程中不會發生數據丟失的情況。對於英文的字符符號,在UTF8中使用單字節存儲,轉換的工作量很小,可以忽略,而對於一些亞洲字符集,在UTF8中一般需要兩到三個字節存儲,需要的Oracle數據庫空間增加,而且轉換的工作量也相對大一些,性能會有一些損失。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved