[Oracle] oracle查询乱码、导入sql脚本乱码问题


本文总阅读量

1、查看当前数据库字符集

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
02:30:58 SYS@ chicago> 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
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.4.0

20 rows selected.

2、查看当前连接终端字符编码是否为gbk,如果不是gbk需要修改,以securecrt为例:

3、如果都是gbk,查询出来的仍为乱码,再次查看环境变量NLS_LANG

1
2
[oracle@dax-mysql-slave ~]$ echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK

如果为空,或者与数据库字符集不匹配,修改为与数据库相同的字符集

4、 在linux系统LANG环境变量为en_US.UTF-8,其他以上参数都为gbk的情况下,查看带有中文的文本文件会是乱码:


这种情况下在sqlplus执行sql脚本,会报错,

5、要执行脚本,需要修改LANG变量,将该传输修改为gbk

6、重新编辑文本文件

7、在sqlplus下再次执行脚本



脚本执行成功。

目录
  1. 1. 1、查看当前数据库字符集
  2. 2. 2、查看当前连接终端字符编码是否为gbk,如果不是gbk需要修改,以securecrt为例:
  3. 3. 3、如果都是gbk,查询出来的仍为乱码,再次查看环境变量NLS_LANG
  4. 4. 4、 在linux系统LANG环境变量为en_US.UTF-8,其他以上参数都为gbk的情况下,查看带有中文的文本文件会是乱码:
  5. 5. 5、要执行脚本,需要修改LANG变量,将该传输修改为gbk
  6. 6. 6、重新编辑文本文件
  7. 7. 7、在sqlplus下再次执行脚本

Proudly powered by Hexo and Theme by Lap
本站访客数人次
© 2020 zeven0707's blog