解决方法1:修改Oracle数据库字符集:
sqlplus /nolog
conn /as sysdba
shutdown immediate;
startup mount;
alter system enable restricted session;
alter system set JOB_QUEUE_PROCESSES=0;
alter system set AQ_TM_PROCESSES=0;
alter database open;
alter database character set INTERNAL_USE ZHS16GBK;
shutdown immediate;
startup;
select userenv('language') from dual;
解决方法2:修改系统字符集(通过NLS):
1)进入HKEY_LOCAL_MACHINE --> SOFTWARE --> Wow6432Node --> Oracle --> KEY_OraDb11g_home1 -->
NLS_LANG
,更改值为:如果要设置为中英文语言,即设置为:
AMERICAN_AMERICA.ZHS16GBK
,也可以设置成中文字符集:
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
或
2)添加环境变量,NLS_LANG,值为:AMERICAN_AMERICA.WE8ISO8859P1
3)设置SQL Developer参数
总结:
通过NLS修改字符集并不管用,通过
select userenv('language') from dual;查询后可得知数据库字符集并没有变,且AMERICAN_AMERICA.WE8ISO8859P1对于中文的支持并不好用,
最终解决问题如下:强制修改服务器端数据库字符集为
AMERICAN_AMERICA.ZHS16GBK,修改客户端字符集与服务器一致,ok问题解决,也就是解决方法1管用;