开始在本地建库时用的默认字符集。
后来连接远程服务器,中文字符显示为乱码。所以将本地字符集改为与远程一致(US7ASCII)。改完后,可以显示远程数据库中的中文字符,但在本地sqlplus等工具中,提示信息为中文时都为乱码。并且sqlplus菜单也为乱码。
这要怎么办?

解决方案 »

  1.   

    运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服 务 器 端 相 同 的 字 符 集(AMERICAN_AMERICAN.US7ASCII)。
      

  2.   

    将数据库字符集修改为:[数据库字符集]为“ZHS16GBK”,[国家字符集]为“AL16UTF16”
      

  3.   

    查看远程服务器的字符集为:SIMPLIFIED CHINESE_CHINA.US7ASCII
    然后把注册表中oracle的nls改为SIMPLIFIED CHINESE_CHINA.US7ASCII。并且把下面键值为home的nls也改为SIMPLIFIED CHINESE_CHINA.US7ASCII。还是无效,提示信息显示仍为乱码。
      

  4.   

    再这样试试 
    ALTER SESSION SET NLS_LANGUAGE= 'SIMPLIFIED CHINESE';
      

  5.   

    注册表改成这样吧
    SIMPLIFIED CHINESE_CHINA.ZHS16GB231280
      

  6.   

    你的系统是中文吗? oracle也是中文吗?
    装oracle时语言与系统的语言不一致吧
      

  7.   

    最好重新安装数据库,选择字符集的时候要谨慎点
    选择:
    [数据库字符集]为“ZHS16GBK”,[国家字符集]为“AL16UTF16”
      

  8.   

    如果这样也没关系
    使用plsql developer 版本与系统一直就应该没问题了
      

  9.   


    中文系统,刚装完oracle没有修改字符集时没有任何问题。但修改过字符集之后,提示信息和sqlplus菜单中的中文都变为乱码。
      

  10.   

    要解决这个问题有两种方法一个是,利用INTERNAL_USE 关键字修改区域设置,还有一个是利用re-create,但是re-create有点复杂,所以请用internal_use,SQL>SHUTDOWN IMMEDIATE;SQL>STARTUP MOUNT EXCLUSIVE;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 national character set internal_use utf8;SQL>alter database character set internal_use zhs16gbk;SQL>SHUTDOWN immediate;SQL>startup;如果按上面的做法做,National charset的区域设置就没有问题2、修改dmp文件字符集上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。
    这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,
    如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因为改的只是dmp文件,所以影响不大。具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的字符集改为ZHS16GBK,可以用以下SQL查出该种字符集对应的16进制代码:   
    SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;0354然后将dmp文件的2、3字节修改为0354即可。如果dmp文件很大,用ue无法打开,就需要用程序的方法了