标签归档:Oracle

CentOS7下使用Oracle 11g sqlplus信息显示乱码

CentOS7下使用Oracle 11g sqlplus信息显示乱码

现象
[oracle@toa ~]$ sqlplus /nologin

SQL*Plus: Release 11.2.0.1.0 Production on ������ 1�� 20 23:43:44 2021

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL*Plus: Release 11.2.0.1.0 Production

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ʹ�� SQL*Plus ִ�� SQL, PL/SQL �� SQL*Plus ���䡣

�÷� 1: sqlplus -H | -V

    -H             ��ʾ SQL*Plus �汾��
                   �÷�������
    -V             ��ʾ SQL*Plus �汾��

�÷� 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]

  <option> Ϊ: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]

    -C <version>   ����Ӱ���������ļ���������Ϊ
                   <version> ָ���İ汾���ð汾����
                   "x.y[.z]" ��ʽ������, -C 10.2.0
    -L             ֻ���Ե�¼һ��, ������
                   �ڳ���ʱ�ٴ���ʾ��
    -M "<options>" �����������Զ� HTML ���ǡ�ѡ��
                   �ĸ�ʽΪ:
                   HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]
                   [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]
    -R <level>     ��������ģʽ, �Խ������ļ�ϵͳ������
                    SQL*Plus �����������
                   �� 1, 2 �� 3���������Ƽ���Ϊ -R 3, �ü���
                   �������ļ�ϵͳ������
                   �����û����
    -S             ��������ʾģʽ, ��ģʽ����
                   ������ SQL*Plus ����, ��ʾ�ͻ���
                   ����ʾ��
解决
# 查看 Oracle 环境变量
[oracle@toa ~]$ echo $NLS_LANG
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

# 修改环境变量为 SIMPLIFIED CHINESE_CHINA.AL32UTF8 [这种修改方式,只在当前 bash 中生效]
[oracle@toa ~]$ export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

# 检查是否还乱码 (如下图所示)
[oracle@toa ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 1月 20 23:21:51 2021

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> exit
[oracle@toa ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 1月 20 23:22:05 2021

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
扩展阅读
  • NLS_LANG 是一个环境变量,用于定义语言,地域以及字符集属性。对于非英语的字符集,NLS_LANG 的设置就非常重要。

  • NLS(National Language Support) 当我们设定一种 NLS 的时候实际上我们是为 Oracle 在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择 Chinese, 那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。

  • NLS_LANG 参数由以下部分组成

    NLS_LANG=<Language>_<Territory>.<Clients Characterset>
    • Language

      • Oracle(错误)信息的语言
      • 日和月份的名称
        注意:NLS_LANGUAGE与插入和查询的数据的语言无关。
    • Territory

      • 货币和数字格式
      • 计算星期和天数的范围和惯例
    • Clients Characterset(客户端字符集)

      • 定义Oracle客户端,客户应用使用的编码
      • 或者它要符合您 Microsoft Windows 代码页( GUI 工具的 ACP, 命令提示符的 CHCP 值)
      • 或者为 Unicode WIN32 应用设置为 UTF8/AL32UTF8