偶们公司的Oracle10g用的字符集为WE8ISO8859P1,暂时来说对中文的支持没有问题~但是,现在需要将一些非中文字符存入系统(如 泰文、印尼文字 等),但这些文字从Excel拷入数据库后都变成了???号,请问我需要怎么设置才能解决这个乱码问题呢?非常感谢!

解决方案 »

  1.   

    要不把数据库的字符集设置为一个大一些的?我印象中好像在目标数据库中找不到相应字符转换的时候ORACLE就会把这些无法转换的字符设置为?
      

  2.   

    暂时缓解的办法是:
    把客户端字符集也设置为WE8ISO8859P1
    这样读出来的时候,oracle字符集是不会转码的,那就OK了.
    设置方法:注册表->HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0修改字符集NLS_LANG但是如果客户端字符集一旦出现变化,那么可能导致全乱码.
      

  3.   

    客户端字符集和服务器字符集需要一致,否则会有乱码问题.
    快速解决字符集乱码问题的两句话
    |||||||||||||||||||||||||||||\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。 
      

  4.   

    修改 HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中 NLS_LANG
      

  5.   


    你好,我的服务端字符集与客户端的字符集都是用AMERICAN_AMERICA.WE8ISO8859P1
      

  6.   


    你好,我的服务端字符集与客户端的字符集都是用AMERICAN_AMERICA.WE8ISO8859P1
    请问还有其它的解决方法吗?
      

  7.   


    你好,我的服务端字符集与客户端的字符集都是用AMERICAN_AMERICA.WE8ISO8859P1 
    请问还有其它的解决方法吗?