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

您所在的位置:网站首页 linux改字符集编码 在Linux下将oracle数据库碰到字符乱码时改成utf8编码的方法

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

2024-03-16 00:23| 来源: 网络整理| 查看: 265

在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数据库的测试环境时,对表插入中文,修改,查询都正常显示了,不会再有乱码的问题了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3