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