查看數據庫的字符集:
select * from nls_database_parameters;
發現:NLS_CHARACTERSET WE8ISO8859P1
表示字符集支持8位,即1個字節,而漢字是2字節,16位的。故應該更改爲 ZHS16GBK.
sys用戶下:alter database character set INTERNAL_USE ZHS16GBK;
提示:ORA-12719: operation requires database is in RESTRICTED mode
即要在RESTRICTED模式下更改。
: startup mount
alter system enable restriced session;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
alter database open
: 再alter database character set INTERNAL_USE ZHS16GBK;
注:restrict模式會將數據庫置於open模式,此時只有restricted session權限的用戶才能訪問數據庫,用於維護動作。
關閉restricted 模式:alter system disable restricted session;
我用的是Linux系統,故在.bash_profile中增加變量:
NLS_LANG=Chinese.China.ZHS16GBK
export NLS_LANG
此時服務器端也可以插入中文了。但是我的客戶端插入的中文,在服務器端顯示亂碼,服務器端插入的中文,在客戶端顯示亂碼。還沒解決,等待向高人求教。