Windows下Oracle数据库中文乱码解决方法


  • 一般来说 Oracle 数据库乱码有以下原因

    1. 服务端设置的字符集不支持中文
    2. 客户端设置的字符集不支持中文
    3. 服务端与客户端设置的字符集不一致
  • 解决方案

    1. 查找当前服务端的字符集

      -- 重点查看NLS_LANGUAGE/NLS_TERRITORY两项数据,修改为
      -- NLS_LANGUAGE=SIMPLIFIED CHINESE
      -- NLS_TERRITORY=CHINA
      SELECT * FROM NLS_DATABASE_PARAMETERS;
      
    2. 在 sysdba 的角色下执行以下指令

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER SYSTEM ENABLE RESTRICTED SESSION;
      ALTER SYSTEM JOB_QUEUE_PROCESSES=0;
      ALTER SYSTEM SET AQ_TM_PROCESSES=0;
      ALTER DATABASE OPEN;
      ALTER DATABASE CHARACTER SET ZHS16GBK;
      -- 如果上面设置报错,使用下面这条指令
      ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
      SHUTDOWN IMMEDIATE;
      STARTUP;
      
    3. 查找当前客户端的字符集设置

      -- 重点查看NLS_LANGUAGE/NLS_TERRITORY两项数据,修改为
      -- NLS_LANGUAGE=SIMPLIFIED CHINESE
      -- NLS_TERRITORY=CHINA
      SELECT * FROM NLS_INSTANCE_PARAMETERS;
      
    4. 打开注册表,输入regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home的NLS_LANG键,使用如下命令将查询出的值填入

      -- SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      SELECT USERENV('LANGUAGE') FROM DUAL;
      
    5. 设置环境变量,在系统变量中添加NLS_LANG变量,填写的值同上


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM