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

本文详细介绍了如何在Oracle数据库中更改字符集至ZHS16GBK的过程,包括进入RESTRICTED模式、设置相关参数及调整环境变量等步骤,并提到了在不同环境中可能会遇到的中文显示问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看数据库的字符集:

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

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值