oracle数据库客户端和服务器端插入中文乱码问题

来源:互联网 发布:淘宝购物券哪里来的 编辑:程序博客网 时间:2024/04/30 03:59

查看数据库的字符集:

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

 

此时服务器端也可以插入中文了。但是我的客户端插入的中文,在服务器端显示乱码,服务器端插入的中文,在客户端显示乱码。还没解决,等待向高人求教。

 

原创粉丝点击