PL/SQL developer 导入Excel数据到linux安装的Oracle中文乱码问题

解决oracle中文显示乱码有三层地方需要调整或者修改
第一层:操作系统层

locale -a

查看操作系统是否安装了中文字符集

2.设置用户的中文字符集

查看到linux安装了中文字符集,那么oracle用户下面要设置中文字符集
原为LANG=“en_US.UTF-8”

vim /etc/locale.conf # centos7是这个配置文件,有的linux是这个配置文件/etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

我的redhat 6.4是在/etc/sysconfig/i18n中设置。
上面的那种方法设置完后,系统所有用户的字符集都是UTF-8。也可以改单个用户的字符集,就是在用户下的环境变量配置文件里面.bashrc里面直接,但本人没有进行验证

export LANG="zh_CN.UTF-8"

然后查看操作系统的字符集,进入Oracle用户查看

env |grep LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=zh_CN.UTF-8

可以看到NLS_LANG中是AL32UTF8

第二层:数据库层
在数据库里面查询数据库和实例的字符集

    select * from nls_database_parameters;
    select * from nls_instance_parameters;
PARAMETER                      VALUE
------------------------------ --------------------
NLS_RDBMS_VERSION              12.2.0.1.0
NLS_NCHAR_CONV_EXCP            FALSE
NLS_LENGTH_SEMANTICS           BYTE
NLS_COMP                       BINARY
NLS_DUAL_CURRENCY              $
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXF
                               F AM TZR

NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXF
                               F AM

NLS_TIME_FORMAT                HH.MI.SSXFF AM
NLS_SORT                       BINARY
NLS_DATE_LANGUAGE              AMERICAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_CALENDAR                   GREGORIAN
NLS_NUMERIC_CHARACTERS         .,
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_CHARACTERSET               AL32UTF8
NLS_ISO_CURRENCY               AMERICA
NLS_CURRENCY                   $
NLS_TERRITORY                  AMERICA
NLS_LANGUAGE                   AMERICAN

20 rows selected.

可以看到数据库的字符集是 AL32UTF8;保持服务端和客户端的字符集一致即可

这样之后,那我们打开sqlplus 查询中文,一般就能正常显示了,如果还是乱码,那就新insert一个中文看看,因为修改之前的字符编码跟修改之后的不一致。

若需要进行数据库字符集修改,进行以下操作
1、启动监听并打开数据库
2、查看Oracle数据库字符集

select userenv('language') from dual;

4.修改Oracle数据库字符集

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
sql> alter database open;
SQL> alter database character set AL32UTF8 #你要的编码集,比如ZHS16GBK,AL32UTF8
SQL> shutdown immediate;
SQL> startup;

这样就将数据库字符集修改过来了

第三层:plsql层(windows层)
重要的PLSQL层,由于我们是通过PLSQL导入Excel数据的,所以首先要保证这部分是中文。
首先修改Windows的环境变量
右击我的电脑,点击“属性”–>“环境变量”,在系统变量中新建键值分别为NLS_LANG:SIMPLIFIED CHINESE_CHINA.AL32UTF8
在这里插入图片描述

然后在PLSQL中进行修改
在PLSQL中点击菜单 tools后点击preferences 在弹出的设置窗口中找到 Appearance下的language,选择设置简体中文即可。

经过以上三层的修改,在PLSQL中进行Excel数据导入后,查询正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值