我在改写过去的一个VC通讯程序时 有一个DLL中的接受函数 如下:GetNewMss(char* NewMsg);
在VC中,我每次都能取道正确的值,可是 我在C#中,我用CHAR * 数组去取值的后付给STRING时完全是乱码,我只好用BYTE * 去取值的时候 只有中文是乱码 数字和字母,符号都是真确的。
在C#中 该如何接受从VC写的DLL 中传来的CHAR * 数据呢?

解决方案 »

  1.   

    一般传过来的都是用unicode编码或者ansi编码的你只有用system.text.encoding类自己解码才能正常显示哈
      

  2.   

    我现在想好像是 VC的CHAR 是ACSII 的 C#的CHAR 是UNICODE的 
    现在居然还要自己转换出中文UNICODE 郁闷 最好有人提供个代码看看
      

  3.   

    具体的代码忘了大概是这样的如果是用的大小顺序的字节码
    System.Text.Encoding.BigEndianUnicode.GetString(byte[]);如果是用的小大顺序的unicode
    System.Text.Encoding.Default.GetString(byte[]);
      

  4.   

    具体的代码忘了大概是这样的如果是用的大小顺序的字节码
    System.Text.Encoding.BigEndianUnicode.GetString(byte[]);如果是用的小大顺序的unicode
    System.Text.Encoding.Default.GetString(byte[]);
      

  5.   

    谢谢 昨天搞到两点,最后一个编码一个编码的试 ,居然VC发过来的就是"GB3212"码,最后用BYTE 去接受收后指定了GB3212码解析方式 终于可以看到中文了
      

  6.   

    呵呵,恭喜,学一招
    顺利问一下,如果万一VC发过来的是GB2312和ASCII混合码,你怎样解决
      

  7.   

    那发这种GB2312和ASCII混合码的VC程序写起来也很不爽吧