把這兩天兩次安裝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中字符進行轉換後再顯示出來。(這只是我分析,沒有找到證據)