我的具体情况是这样的:
1.ORACLE的language设置:
在SQL*PLUS工具中查询server端的字符集SQL> select userenv('language') from dual;得出结果 AMERICAN_AMERICA.WE8MSWIN1252
在client端的字符集为:NA(之后,我通过注册表将NA 该为了AMERICAN_AMERICA.WE8MSWIN1252)
注:server端的oracle字符集设置不可更改2.Client端的OS为英文版的(此项设置为用户需要,不可更改)3.SQL SERVER端的数据库是CHINESE_PRC_CI_AS的问题出现了,我从oracle中获得的字符串存入sql server 中后却为乱码,这个问题已经困扰我很多天了,一直没有解决,请大家帮帮忙!先谢谢了!!

解决方案 »

  1.   

    orcale没用过不过SQLserver中我们都是在内容前加大写的N就可以了
      

  2.   

    TO brightyang:补充一点:我的开发工具是DELPHHI2007我按照你的说法试了一下,报错,不知是否是语句写法的问题,我是这样写的:
    UPDATE TABLE1 SET NAME=N:NAME WHERE ID=1000错误信息为:Invalid column name 'N@P1'我该如何写这条语句呢?
      

  3.   

    TO   brightyang: 我试了另外一种写法,UPDATE   TABLE1   SET   NAME=N'''+NAME+''' WHERE   ID=1000 
    语法错误没有了
    但是存入的数据还是乱码各位大侠有什莫好的解决办法????补充:我在调试时从ORACLE中抓取得数据就是乱码,这该如何解决,使其不是乱码呢????
      

  4.   

    to Bear_hx:在不改变os语言设置的前提下,还有别的办法吗???
      

  5.   

    乱码不是因为你如何去操作数据库,而是在中间过程当中传入的数据。建议中间不要使用AnsiString,而使用WideString。对于ftString类型字段,需要特别注意进行还原(最好是按照其本身的字符集转换成Unicode),从而以ftWideString进行操作。
      

  6.   

    to brightyang:
     
    你说的是SetThreadLocale吗?我尝试了这种方法,但是似乎没有效果,写法如下:
    Application.Initialize;
    SetThreadLocale(DWORD(Word(SORT_DEFAULT) shl 16) or
                      DWORD(Word(SUBLANG_CHINESE_SIMPLIFIED) shl 10) or
                      DWORD(Word(LANG_CHINESE)));
    ......
    不知什莫原因
    to hongqi162:
    在我的问题描述中已经写清楚了,两端的字符集是一样的