oracle生僻字和外国语言存储乱码问题

百般思念 提交于 2020-08-18 20:39:10

如果oracle使用了ZHS16GBK字符集会有存储生僻字和外国语言乱码问题,但是使用AL32UTF8字符集则不会有这个问题。

所以在安装oracle的时候要使用AL32UTF8编码,对于在使用中的oracle可以直接改变编码。

ZHS16GBK与AL32UTF8与不同

  1. 对英文,仍然和ASCII一样用1个字节表示,这个字节的值小于128(\x80);
  2. 扩展的ASCII字符(主要是西欧),第一字节用C2 - DF之间的范围,双字节表示。
  3. 对其他语言,比如亚洲语系,还有各种特殊符号,使用3个字节表示;

步骤

  1. 导出数据库

  2. 登录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;
  1. 如果设置了环境变量NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 要 改成 NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  2. 导入数据库,该过程会导入出错。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!