oracle 9i,服务端字符集设置为AMERICAN_AMERICA.UTF8,客户端NLS_LANG与服务端一致问题:
程序1录入中文,数据库以双字节保存
程序2录入相同的中文,数据库却以三字节保存
从而导致1,2录入的字符互不兼容,录入的数据在另外的程序中显示为乱码请问是什么原因?

解决方案 »

  1.   

    我觉得这个和oracle的编码没有关系,你应该好好看看你的两个程序是不是已经预先编码了比如jsp上的UTF 和 GBK 都会影响的
      

  2.   

    http://topic.csdn.net/u/20090111/12/9eb8eacd-17e7-4474-9857-0c4282a2ddcb.html
      

  3.   

    UTF8使用3个字节为汉字编码程序1的字符集配置处理有问题
      

  4.   

    oracle的字符集有三方面,服务器端,客户端,已经客户端的os这三者之间的字符集要相互兼容才能显示正常的字符;
    另外你的应用的通过什么实现的,应用的字符集也是要和数据库的字符集设置成一致的,这样才能在程序中正确显示字符;
      

  5.   

    1.查询服务器端配置的字符集。在sqlplus中以dba用户执行:   
      select   tab1.aa||'_'||tab2.bb||'.'||tab3.cc   from   (select   VALUE$   aa   from   sys.props$   where   name='NLS_LANGUAGE')tab1,(select   VALUE$   bb   from   sys.props$   where   name='NLS_ISO_CURRENCY')tab2,(select   VALUE$   cc   from   sys.props$   where   name='NLS_CHARACTERSET')tab3;   
        
      2.在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_LANG,则“新建”->“字符串”,重命名为“NLS_LANG”,并赋值为上述查询变量的值(注意引号内的字符应大写),再查看时不需要重启Oracle。
      

  6.   

    xiaoxiao1984 是对的,感谢各位,结贴