Oracle数据库关于中文乱码问题

oracle数据库关于中文乱码问题

某些时候当我们使用远程工具(如xshell)远程连接数据库时会出现乱码情况,如下:

[oracle@ora ~]$ sqlplus / as sysdba

 
SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 12 11:46:28 2020
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
???:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
 
SYS@ORCL>

乱码这个地方正常应该为“连接到”或者“Connected to”

为什么这个地方会出现乱码呢?

        是因为系统语言与数据库安装的语言不符导致的,比如说安装系统时候选择的是中文,而安装数据库时选择的是英文,或者说安装系统时候选择的是英文,而安装数据库时安装的却是中文,所以使用远程工具连接时候就会出现这种问题,那么就需要修改一方的语言即可正常显示。

        在这里我系统安装为英文,数据库安装为中文,下列示例中修改系统语言为中文,当然也可修改数据库为英文,这里就不做演示了。

 

1 查询数据库编码格式

# oracle用户登录数据库

sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Mar 12 11:46:28 2020
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

???:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYS@ORCL>

set linesize 2000;

select * from v$NLS_PARAMETERS;

PARAMETER                                                        VALUE
---------------------------------------------------------------- --------------------------------
NLS_LANGUAGE                                                     SIMPLIFIED CHINESE
NLS_TERRITORY                                                    CHINA
NLS_CURRENCY                                                     ?
NLS_ISO_CURRENCY                                                 CHINA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                SIMPLIFIED CHINESE
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT                                             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT                                               HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY                                                ?
NLS_NCHAR_CHARACTERSET                                           AL16UTF16
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE

???19??

NLS_LANGUAGE表示“语言”,NLS_TERRITORY表示“地域”,NLS_CHARACTERSET表示“字符集”,将这三个按照“语言_地域.字符集”拼接起来,就有了“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

 

2 修改oracle环境变量

vi .bash_profile

添加:

NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; export NLS_LANG

source .bash_profile

 

3 修改连接工具的编码

将连接工具修改为Chinese Simplified(GBK)编码,以xshell为例:

posted @ 2020-09-23 16:51  chchcharlie、  阅读(1057)  评论(0编辑  收藏  举报