某些时候当我们使用远程工具(如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@ora ~]$ sqlplus / as sysdba
SYS@ORCL> set linesize 2000;
SYS@ORCL> 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)编码,例:
重新打开一个窗口连接即可显示中文