SQL*Plus:字符集问题,导致的乱码(“?”)
问题如题所示,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@ogg-target ~]# su - oracle [oracle@ogg-target ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 24 06:29:21 2016 Copyright (c) 1982, 2005, Oracle. All rights reserved. ???: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> |
可以看到,上面有乱码的情况“???”。
针对这个问题,首先查看当前实例的字符集信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
SQL> set linesize 400 SQL> col value for a30 SQL> SQL> select * from nls_database_parameters; PARAMETER VALUE ------------------------------ ------------------------------ NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM PARAMETER VALUE ------------------------------ ------------------------------ 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_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_RDBMS_VERSION 10.2.0.1.0 ???20?? SQL> |
通过上面的查询,可以看到我们应该如何设置NLS_LANG环境变量的值。
设置环境变量:NLS_LANG。
1 2 3 4 |
[oracle@ogg-target ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK [oracle@ogg-target ~]$ env | grep NLS_LANG NLS_LANG=AMERICAN_AMERICA.ZHS16GBK [oracle@ogg-target ~]$ |
再次进入SQL*Plus,应该就不会有乱码了:
1 2 3 4 5 6 7 8 9 10 11 12 |
[oracle@ogg-target ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 24 06:32:48 2016 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> |
————————————————————
Done。