明白ORACLE的多國語言設定

2021-04-13 14:09:31 字數 2044 閱讀 1495

wlgyhnj(冷風0)

明白oracle的多國語言設定,oracle多國語言設定是為了支援世界範圍的語言與字符集,一般對語言提示,貨幣形式,排序方式和char,varchar2,clob,long欄位的資料的顯示等有效。oracle的多國語言設定最主要的兩個特性就是國家語言設定與字符集設定,國家語言設定決定了介面或提示使用的語言種類,字符集決定了資料庫儲存與字符集有關資料(如文字)時候的編碼規則。正如剛才上面的乙個小例子,環境變數nls_lang的不同,導致exp幫助發生變化,這就是多國語言設定的作用(nls_lang包含國家語言設定與字符集設定,這裡起作用的是國家語言設定,而不是字符集)。

oracle字符集設定,分為資料庫字符集和客戶端字符集環境設定。在資料庫端,字符集在建立資料庫的時候設定,並儲存在資料庫props$表中,對於8i以上產品,已經可以採用「alter database character set 字符集」來修改資料庫的字符集,但也僅僅是從子集到超集,不要通過update props$來修改字符集,如果是不支援的轉換,可能會失去所有與字符集有關的資料,就是支援的轉換,也可能導致資料庫的不正常工作。字符集分為單位元組字符集與多位元組字符集,us7ascii就是典型的單位元組字符集,在這種字符集中length=lengthb,而zhs16gbk就是常用的雙位元組字符集,在這裡lengthb=2*length。

在客戶端的字符集環境比較簡單,主要就是環境變數或登錄檔項nls_lang,注意nls_lang的優先級別為:引數檔案à登錄檔à環境變數àalter session。nls_lang的組成為「國家語言設定.字符集」,如nls_lang=simplified chinese_china.zhs16gbk。客戶端的字符集最好與資料庫端一樣(國家語言設定可以不一樣,如zhs16gbk的字符集,客戶端可以是nls_lang =simplified chinese_china.zhs16gbk或ameircan_america.zhs16gbk,都不影響資料庫字元的正常顯示),如果字符集不一樣,而且字符集的轉換也不相容,那麼客戶端的資料顯示與匯出/匯入的與字符集有關的資料將都是亂碼。

使用一點點技巧,就可以使匯出/匯入在不同的字符集的資料庫上轉換資料。這裡需要乙個2進製檔案編輯工具即可,如uedit32。用編輯方式開啟匯出的dmp檔案,獲取2、3位元組的內容,如00 01,先把它轉換為10進製數,為1,使用函式nls_charset_name即可獲得該字符集:

sql> select nls_charset_name(1) from dual;

nls_charset_name(1)

-------------------

us7ascii

可以知道該dmp檔案的字符集為us7ascii,如果需要把該dmp檔案的字符集換成zhs16gbk,則需要用nls_charset_id獲取該字符集的編號:

sql> select nls_charset_id('zhs16gbk') from dual;

nls_charset_id('zhs16gbk')

--------------------------

852

把852換成16進製制數,為354,把2、3位元組的00 01換成03 54,即完成了把該dmp檔案字符集從us7ascii到zhs16gbk的轉化,這樣,再把該dmp檔案匯入到zhs16gbk字符集的資料庫就可以了。(注意,十進位制數與十六進製制之間的轉換,想明白其中的道理)

4.1.4 跨版本使用exp/imp

exp/imp很多時候,可以跨版本使用,如在版本7與版本8之間匯出匯入資料,但這樣做必須選擇正確的版本,規則為:

·總是使用imp的版本匹配資料庫的版本,如果要匯入到816,則使用816的匯入工具。

·總是使用exp的版本匹配兩個資料庫中低的那個版本,如在815與816之間互導,則使用815的exp工具。

我用這個方法,成功解決從815版本的american_america.us7ascii到oracle9i版本的similifild chinese_china.zhs16gbk的轉換,並且用exp和imp都不出問題。

你可以參考一下。

WinCE設定多國語言支援

最近專案中需要支援中 簡繁 日韓英多種語言,在網上找了很多解決辦法,最後發現還是msdn最好。msdn相關解釋 http technet.microsoft.com zh cn library ms903933 en us aspx 如果想把字型放到sd卡中 step1 向輸出路徑下的common....

WinCE設定多國語言支援

最近專案中需要支援中 簡繁 日韓英多種語言,在網上找了很多解決辦法,最後發現還是msdn最好。c sharp view plain copy hkey local machine system gdi glyphcache limit dword 5000 hkey local machine sy...

移植多國語言

二 移植zi輸入法 1 開啟zi開關 1 檔案 make ztenc26 07b gprs.mak 修改輸入法為mmi zi input method mmi zi input methods none,mmi t9,or mmi zi 2 在mmi features.h裡面開啟相應的zi語言輸入法...