oracle 如果server與client端的編碼不一致,asp.net讀取db記錄顯示時,就可能出現亂碼
regedit打開注冊表:
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1
修改NLS_LANG的值,一般為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK (簡體中文編碼,這也是oracle安裝時默認的編碼),如果服務端是utf8,該值需要修改成SIMPLIFIED CHINESE_CHINA.AL32UTF8
tips:如果不記得字符串,也可以通過在服務端運行 select userenv('language') from dual; 查看
此外,如果使用pl/sql devloper,該軟件啟動時,也會檢測客戶端與服務端之間的編碼差異,如果發現不同,將彈出下面的對話框:
要想去掉這個提示:修改HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient11g_client_x86下NLS_LANG的値即可
(注:經本人實際測試發現,修改了注冊表后,雖然這個提示框不再彈出,但有可能導致oracle自帶的sqlplus出現亂碼,所以建議還是直接第一次彈出該窗口時,直接勾上 Don't show this message again為好,眼不見為凈)
修改db編碼的辦法:(在oracle 11g上通過測試)
SQL> conn system as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use AL32UTF8;
SQL> shutdown immediate;
SQL> startup