查看数据库的字符集:
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
此时服务器端也可以插入中文了。但是我的客户端插入的中文,在服务器端显示乱码,服务器端插入的中文,在客户端显示乱码。还没解决,等待向高人求教。