各位高手,小弟碰到一个难题,由于要和国外传送接口,下面是接口的规则.
Value  hex code  ASCII
+0 C0   ä
+1 C1   A
+2 C2   B
+3 C3   C
+4 C4   D 
+5 C5   E
+6 C6   F
+7 C7   G
+8 C8   H
+9 C9   I 其他都没问题,唯独表示+0时候要用特殊字符ä表示,我尝试用NVARCHAR表示ä成功,但对方表示是双字节的,必须用单字节表示,但我SQLDERVER是中文字符集,无法用单字节表示这个ä,
大家有什么好的办法吗
谢谢

解决方案 »

  1.   

    if object_id('tbl')is not null
    drop table tbl
    go
    create table tbl(
    A varchar(20),
    B varchar(20),
    C Nvarchar(20),
    )
    go
    insert tbl
    select '+0','C0',N'ä' union all
    select '+1','C1',N'A' union all
    select '+2','C2',N'B'select * from tbl(3 行受影响)
    A                    B                    C
    -------------------- -------------------- --------------------
    +0                   C0                   ä
    +1                   C1                   A
    +2                   C2                   B
      

  2.   

    谁说是双字节的喔?select len(cast(N'ä' as nvarchar(2))) lenalena
    -----------
    1(1 row(s) affected)
      

  3.   

    ap0405140你好
    nvarchar就是用双字节表示å,能用varchar表示å吗
      

  4.   

    因为我用NVARCHAR转到国外就变成0?0?0?å了
      

  5.   

    用varchar 表示不了,会出现乱码的。
      

  6.   

    简单的说要用ASII码,unicode都是16位的
      

  7.   

    maco_wang你好
    退一步说,我在数据库中用NVARCHAR去表示å,最后我需要用BCP把数据库的数据导出成txt接口文件,现在问题是对方表示TXT文件里面是双字节的,因为我用BCP里面的-W参数导出的,但用-c导出会乱码,这个有问题解决吗,总而言之,只要在接口文件里面显示的文本不是doule-bytes就OK了
      

  8.   

    AcHerat你好
    对方是外国人,你懂得,让他们处理一点东西很难
      

  9.   

    字符集的问题,在考虑数据类型的时候要注意了,varchar或nvarchar
      

  10.   

    经过几天的研究,发现虽然在中国的字符集ansi码不能显示ä 
    但我通过修改这个字符的十六进制,可以实现,然后传到国外,对方也能正常显示,问题是我使用
    XVI32软件修改该字符的十六进制代码的(对应的十六进制为:E5),但我想能在SQL里面,自动帮这个字符修改,大家有什么办法吗?
      

  11.   

    OK,感谢大家的帮助,最后我自己研究出来了在导出txt文件的时候,BCP命令,选-C code_page选项就OK了
    谢谢大家支持