程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 8i更新相關類型中出現亂碼問題的解決

Oracle 8i更新相關類型中出現亂碼問題的解決

編輯:Oracle數據庫基礎

Oracle 8i在更新中包含varchar2和date類型的相關記錄時varchar2會出現亂碼問題,雖然Oracle 8i以前就被人使用,現在用的人並不占多數,但是畢竟還是有一部分的人在用的,比如遇到亂碼等相關問題的介紹。

問題描述:

環境:Windows XP,Oracle 8i 8.1.6.0.0

問題:使用JDBC連接數據庫,在同時更新一個包含varchar2和date類型的記錄時,某個varchar2會出現亂碼,無論英文還是中文,並且還有可能同一個字段前半部分亂碼後半部分不亂碼。同樣的sql語句,使用sqlplus執行就沒有問題。

問題解決:

首先,用DBA的權限執行下面的語句:

select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,(select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3

在Oracle 8i運行中要更新復制上面語句的執行結果,在我的機器上執行的結果是:AMERICAN_AMERICA.ZHS16GBK打開注冊表,找到HKEY_LOCAL_MacHINE/SOFTWARE/Oracle/HOME0,找到NLS_LANG,雙擊,將數值數據改為剛復制的那個

修改完注冊表,重啟機器。在這裡可能有一些問題,首先如果你的Oracle不是一次安裝成功的,那麼可能有HOME0,HOME1等,在我的經歷中,首先將HOME1中的NLS_LANG改了,但是問題依舊,然後將HOME0中改了,問題才解決,所以改的時候把所有的HOMEX中NLS_LANG的都改了吧,如果沒有就新建一個。

其次,單改注冊表可能還會出現問題,這時候就要改jdbc驅動了,不要用那些10g,9i,8i通吃的驅動,去Oracle安裝目錄中的jdbc目錄找,用這裡的驅動問題解決。
 

以上就是對Oracle 8i更新包含varchar2和date類型的記錄時varchar2亂碼的相關內容的介紹,望你會有所收獲。

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