Oracle和Developer/2000字符集的選擇和改變
2024-08-29 13:38:18
供稿:網友
一、字符集的選擇
在Oracle客戶機/服務器應用中,前端開發工具Developer/2000應和Oracle數據庫選擇相同的字符集,否則Developer/2000不能正確處理漢字,如不能輸入漢字、漢字顯示亂碼等。要正確處理漢字,一般有兩種方案可供選擇:
方案一:使用US7ASCII字符集。
在創建Oracle數據庫時,字符集選擇US7ASCII,在安裝Developer/2000時,語言選擇English,安裝完成后,Developer/2000缺省的字符集不是US7ASCII,應將windows目錄下的oracle.ini文件中[Oracle]節里的
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
修改為
NLS_LANG=AMERICAN_AMERICA.US7ASCII
方案二:使用ZHS16CGB231280字符集。
在創建Oracle數據庫時,字符集選擇ZHS16CGB231280。在安裝Developer/2000時,語言相應地選擇SimplifiedChinese,其缺省的字符集為ZHS16CGB231280。
假如采用方案一,一個漢字相當于兩個字符。例如"一個漢字"的長度是8,substr('一個漢字',1,2)的結果為"一"。假如采用方案二,一個漢字相當于一個字符。例如"一個漢字"的長度是4,substr('1個漢字',1,2)的結果為"一個"。
在客戶端,方案一能正常顯示庫中的漢字,但在錄入單個漢字時有時需要加空格,錄入詞組時有時會顯示亂碼;方案二能正常處理漢字,包括正確顯示和錄入漢字。
二、字符集的改變
1.Oracle數據庫字符集的改變
Oracle數據庫的字符集是在安裝數據庫時選定的,一旦數據庫創建之后,數據庫的字符集是不能改變的,假如要改變數據庫的字符集,只有重新創建數據庫。假如要在使原數據庫中數據保持不變的前提下改變字符集,則可以參考以下方法:
1)關閉Oracle,物理備份Oracle系統。
2)啟動Oracle,修改sys的表PRops$,把name='NLS_CHARACTERSET'行的values$設置為新的字符集。例如
updateprops$setvalue$='ZHS16CGB231280'wherename='NLS_CHARACTERSET';
3)設置環境變量NLS_LANG。例如
NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
4)用EXP做全部數據庫備份。
5)關閉Oracle。
6)重新創建數據庫。
7)用IMP做全部數據庫恢復。
8)假如由于各種原因不成功,可以使用第一步的物理備份恢復原始數據庫。
2.Developer/2000字符集的改變
Developer/2000安裝后,可以通過修改文件oracle.ini修改字符集,修改方法可參考方案一。
Developer/2000的字符集改變以后,原來編譯好的文件(如*.fmx)可以正常運行,但源文件(如*.fmb)里的提示性漢字顯示為亂碼,即使重新編譯以后運行,提示性漢字仍顯示為亂碼。所以,假如要修改源程序,還要對其中的漢字重新改寫。