sql*plus显示乱码问题
2016-08-30 16:13
411 查看
1、现象
最近使用oracle新搭环境发现通过sqlplus登陆时,显示乱码,如下图所示,严重影响sqlplus的使用:
2、解决方案
通过查阅资料发现sqlplus乱码与操作系统用户中的NLS_LANG这个环境变量有关系,如果这个与数据库字符集不一致的话就会产生乱码。坚持NLS_LANG这个环境变量发现根本就没有设置这个变量,则应该是读取操作系统字符集来作为默认字符集。
[oracle@localhost ~]$ echo $NLS_LANG
[oracle@localhost ~]$
如何查看数据库字符集,通过nls_database_parameters查询,可以得到NLS_CHARACTERSET的值为UTF8即为数据库字符集
SQL> col parameter for a30
SQL> col value for a25
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 UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
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_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.1.0
查询NLS_LANG的组成规则为NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET,即操作系统环境变量应该要设置为AMERICAN_AMERICA.UTF8。如下图所示,乱码解决了:
顺利解决了乱码问题,修改.profile(unix 系统)或.bash_profile,增加
export NLS_LANG="AMERICAN_AMERICA.UTF8"
就行了。
1、现象
最近使用oracle新搭环境发现通过sqlplus登陆时,显示乱码,如下图所示,严重影响sqlplus的使用:
2、解决方案
通过查阅资料发现sqlplus乱码与操作系统用户中的NLS_LANG这个环境变量有关系,如果这个与数据库字符集不一致的话就会产生乱码。坚持NLS_LANG这个环境变量发现根本就没有设置这个变量,则应该是读取操作系统字符集来作为默认字符集。
[oracle@localhost ~]$ echo $NLS_LANG
[oracle@localhost ~]$
如何查看数据库字符集,通过nls_database_parameters查询,可以得到NLS_CHARACTERSET的值为UTF8即为数据库字符集
SQL> col parameter for a30
SQL> col value for a25
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 UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
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_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.1.0
查询NLS_LANG的组成规则为NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET,即操作系统环境变量应该要设置为AMERICAN_AMERICA.UTF8。如下图所示,乱码解决了:
顺利解决了乱码问题,修改.profile(unix 系统)或.bash_profile,增加
export NLS_LANG="AMERICAN_AMERICA.UTF8"
就行了。
相关文章推荐
- oracle终端sqlplus显示乱码问题
- oracle sqlplus中文显示乱码的问题
- Oracle:sqlplus查询出的中文是乱码问题的解决(转)
- sqlplus 汉字乱码问题的解决
- LINUX和pl/sql development上ORACLE显示乱码问题
- Oracle技术之sqlplus汉字乱码问题的解决
- 关于Oracle for Linux sqlplus 的乱码问题
- Oracle:sqlplus查询出的中文是乱码问题的解决(转)
- sqlplus 汉字乱码问题的解决
- PL/SQL Developer 显示中文乱码问题
- 解决pl/sql developer中数据库表中显示中文乱码问题
- sqlplus 汉字乱码问题的解决
- sqlplus 汉字乱码问题的解决
- 解决Linux下sqlplus中文乱码问题
- 关于SQL的char,varchar字段在导出时切断中文字符显示问号或乱码的问题[原创]
- sqlplus 汉字乱码问题的解决
- sqlplus 帮助无法显示问题的解决
- sqlplus 连接oracle10g 乱码问题
- sqlplus下加载CLOB 字段的乱码问题
- centos 下oracle sqlplus乱码问题解决