在Linux下将oracle数据库碰到字符乱码时改成utf8编码的方法

在Linux下oracle数据库碰到字符乱码的解决方法

	linux下Oracle显示中文乱码的情况和原因

操作系统与服务器一致,但客户端与服务器字符集不一致
客户端与服务器一致,但操作系统与服务器不一致

解决办法
设置相关的字符集,保证操作系统、客户端、数据库服务器,保证这三者的字符集都相同。

1在linux下查看oracle数据库服务器字符集的命令
查看数据库字符集 select userenv(‘language’) from dual;
显示

AMERICAN_AMERICA.ZHS16GBK;
1
说明这个数据库的字符集不是utf-8

2 更改数据库服务器端的字符集

sqlplus sys/ as sysdba;//以管理员的身份登陆oracle数据库
执行以下命令

shutdown immediate; (把database停了)

startup mount; (把database重开去可更改情況)

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 utf8;

shutdown immediate;

startup; (重开正常oracle)
再次执行命令
select userenv(‘language’) from dual;
出现 AMERICAN_AMERICA.UTF8明服务器的字符编已经修改为utf8格式

3查看客户端环境变量
执行命令
echo $NLS_LANG

出现AMERICAN_AMERICA.ZHS16GBK;说明客户端的字符编码不是utf8格式的

4配置当前用户的环境变量,将客户端的字符集改为utf8格式

vi .bash_profile
1
在.bash_profile中加入环境变量

export NLS_LANG=AMERICAN_AMERICA.UTF8
1
$ source .bash_profile` //执行source命令使修改完的.bash_profile文件生效
1
这样客户端的字符集也修改成utf8格式的

5操作系统字符集的修改

cat /etc/sysconfig/i18n //查看linux配置文件里默认设置的字符集字体

vim /etc/sysconfig/i18n //修改i18n里面linux的默认字符集

i18n文件内容如下:
LANG=“en_US.GBK” //把这一项的值改成UTF8字符集,改为:LANG=“en_US.UTF-8” en_US代表系统本身是用英文显示的,中文为:zh_CN编码格式是UTF-8

source /etc/sysconfig/i18n //执行source 命令使i18n文件的修改生效.

修改完后,再切换回oracle用户,再用命令locale或者是echo $LANG查看下当前的操作系统字符集,你会发现已经和客户端和数据库的一致了,都是UTF8.这个时候你再进入oracle数据库的测试环境时,对表插入中文,修改,查询都正常显示了,不会再有乱码的问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值