如果oracle使用了ZHS16GBK字符集会有存储生僻字和外国语言乱码问题,但是使用AL32UTF8字符集则不会有这个问题。
所以在安装oracle的时候要使用AL32UTF8编码,对于在使用中的oracle可以直接改变编码。
ZHS16GBK与AL32UTF8与不同
- 对英文,仍然和ASCII一样用1个字节表示,这个字节的值小于128(\x80);
- 扩展的ASCII字符(主要是西欧),第一字节用C2 - DF之间的范围,双字节表示。
- 对其他语言,比如亚洲语系,还有各种特殊符号,使用3个字节表示;
步骤
-
导出数据库
-
登录oracle管理账号
sqlplus / as sysdba
,执行下面命令
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
SQL>SHUTDOWN IMMEDIATE;
SQL>startup;
- 如果设置了环境变量
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
要 改成NLS_LANG=AMERICAN_AMERICA.AL32UTF8
- 导入数据库,该过程会导入出错。
来源:oschina
链接:https://my.oschina.net/hgp/blog/4504657