是这样,我笔记本上通过VMWare Workstation装了rhel6.5的虚拟linux环境,虚拟机上装了oracle 11g R2服务器,然后用笔记本本地的PL/SQL Developer连接上虚拟机中的oracle server。
问题是,当我在secureCRT工具中登陆linux中的数据库并新增一行中文数据时,在secureCRT中查询数据能正常显式中文,如下图所示:
但是转到developer中查看的时候则显式乱码,如图示:同样的,当在developer新增中文数据时,在developer中查看显式的是中文,但是到secureCRT中查看却是乱码。也就是说,developer和secureCRT之间不能正常显式对方输入的中文数据。另外,如果是通过VMWare Workstation登陆linux并进入oracle然后新增一条中文数据的话,在Workstation中能正常显式中文,转到secureCRT中查看也能正常显式中文,但是在developer中却显式乱码。而在secureCRT新增的中文数据,在Workstation中能正常显式;在developer中输入中文数据,在Workstation中不能正常显式。总的来说,就是secureCRT和Workstation两者之间能正常显式对方输入的中文数据,而developer不论是与secureCRT还是Workstation之间都不能正常显式对方输入的中文数据。所以想问一下各位大神,这种情况怎么解决?其实作为解决办法之一我知道只要坚持只在一端比如developer中输入并且查看数据就可以了,但是我想知道为什么会出现这种状况,以及怎么改正过来,希望大家指点指点!多谢啦!!!

解决方案 »

  1.   

    看一下你本地环境变量 nls_lang 这个设置的,和crt软件的字符集设置。两者要一样。
      

  2.   

    查看PLSQL客户端使用的编码和服务器端编码不一致,将其改为一致即可。
      

  3.   

    secureCRT和Workstation都是直接使用的服务端,developer使用的是你本地客户端,二者字符集不一致时就出现乱码
      

  4.   

    查看Oracle字符集
    select userenv('language') from dual;
    查看注册表Orcale字符集:
    运行->regedit->sortware->oracle->oraclehome选中查看NLS_LANG的值
    是否和上一个查询是否一致,改为相同。
      

  5.   

    你可以用这条命令select userenv('language') from dual;查询Oracle的字符集,然后在本机配置环境变量NLS_LANG :SIMPLIFIED CHINESE_CHINA.ZHS16GBK好多次我都直接用红色字的变量值给配置好了
    然后重启PL/sql就好了