asp.net查出 oracle資料庫中的中文亂碼問題

iDotNetSpace發表於2009-04-20

把這兩天兩次安裝IBM2650伺服器中出現的問題做一個總結:

1、第一次安裝,用IBM的引導盤引導,按步就班的下來,選擇語言,做Raid5,選擇windows系統等等。安裝好windows2003企業版之後,再去安裝oracle時,安裝到一半時,提示不能建立快捷方式。取消,再安裝還是不能建立快捷方式,就那樣安裝上了。安裝之後oracle執行倒也正常,匯入資料,發現中文變成了亂碼。再安裝editplus和winrar發現顯示視窗的中文也是亂碼,右鍵選單上的部分中文是亂碼。在網上搜了一下,原來是windows選擇的字符集不對,在控制皮膚-語言修改成中文後,右鍵選單上的中文正常顯示了,檢視oracle資料庫裡的中文,也正常了。按說,到這裡問題也就解決了,應該結束了。可是配置上asp.net網站之後,發現查詢出來oracle資料庫中的中文,在網頁上顯示為亂碼。

2、於是開始瞭解決oracle資料庫中中文在asp.net網頁上顯示為亂碼的過程。在網上搜,絕大多數說是oracle字符集的問題,可我覺得,用plsql developer檢視中文正常,應該不是oracle字符集的問題。下班了,晚上回去繼續找,還是沒有找到有效的解決辦法。寫了三個檢視oracle資料庫中中文的小程式,一個是用vb6寫成的,一個用.net寫成的winform程式,一個用.net寫成的webform程式。同時計劃比較伺服器上的oracle的字符集和和本機上的oracle的字符集。第二天,先執行vb6程式,顯示oracle資料庫的中文正常,再執行.net winform程式oracle資料庫中的中文是亂碼,執行.net webform程式,oracle資料庫中的中文也是亂碼。初步判斷是.net的字符集不正常。於是找怎麼修改.net的字符集的問題,找了半天也無找到有說.net字符集的問題,可能不是.net字符集的問題。於是就檢視了oracle的字符集,結果發現伺服器上的oracle的字符集和我機器上的oracle的字符集還真的不一樣:我機器上的oracle的字符集是中文NLS_CHARACTERSET:ZHS16GBK,而伺服器上的字符集是:WE8MSWIN1252。那就想辦法修改oracle的字符集吧,可是由於對oracle不是很熟悉,弄了老大一會也沒有沒有弄好,想把oracle解除安裝了重灌,結果不小心把系統也搞出了一些毛病,乾脆重灌了系統,注意了那些問題,安裝之後也就一切OK。

 3、分析:

  1)安裝oracle時不能建立快捷方式,及安裝其他程式也不能建立快捷方式,並且安裝過程中視窗上中文是亂碼,右鍵選單上的部分中文是亂碼,這個原因是windows沒有設定成中文,也就是在IBM的引導盤安裝的過程中,不熟悉,沒有注意選擇正確的時區,正確的字符集造成的。

2)vb6程式顯示的oracle中文字元正常,而.net顯示的oracle中文為亂碼的原因應該是它們的機制不同造成的:vb6用的是oledb,它可能使用oracle本身的字符集原樣的顯示了oracle中的字元;而.net用的是另外的一種機制,它要把oracle中字元進行轉換後再顯示出來。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-591022/,如需轉載,請註明出處,否則將追究法律責任。

相關文章