(出現亂碼 解決方法留存)
問題描述 :
在用eclipse使用jdbc插入中文數據的時,數據用plsqldev查詢時,正常顯示中文,但是用sqlplus查詢時,為中文亂碼,當用plsqldev直接插入中文時,也直接會出現亂碼,用sqlplus插入的中文,plsqldev讀出亂碼---> plsqldev與sqlplus出現亂碼不一致情況
解決 :
1)使用查詢語句
select * from v$nls_parameters;
查詢到的
NLS_CHARACTERSET AL32UTF8 --主要是看這個編碼
網上解決方式一,修改注冊表
路徑:regedit>>HKEY_LOCL_MACHINE>>SOFTWARE>>ORALCE>>KEY_ORADB11G_HOME1 NLS_LANG的值設置為SIMPLIFIED CHINESE_CHINA.ZHS16GBK --主要是修改后邊的字符編碼即可
疑問:數據庫明明是 AL32UTF8 編碼,客戶端為什么修改為GBK編碼 才能正常顯示。。大體可能數據庫的資源,在控制台顯示的時候會有一個默認轉碼,設置為GBK才能正常顯示。。。這個解決方法只能解決sqlplus的亂碼,而不能解決plsqldev的亂碼,有可能是我裝的是64位數據庫,又裝了一個32位的客戶端,plsqldev是依靠32位,所以這樣的修改對plsqldev沒有影響
網上解決方式二,修改環境變量
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK --加入一個系統環境變量
這樣,plsqldev與sqlplus讀取時,都會先找系統環境變量,如果存在nls_lang變量,就不需要讀取注冊表了。。
最終解決方式
選擇方法二,直接修改環境變量,不需要修改注冊表,兩者都會起作用