c#调用com组件时,输出string类型参数,中文乱码是怎么回事?

解决方案 »

  1.   

    你的COM组件写的有问题,COM里一般都用BSTR来表示一个字符串,而不用string类型
      

  2.   

    楼主用不同的编码的试试呢。
    比如
    Encoding.UNICODE.getstring()方法或再换用其他编码比如UTF8或default编码试试,说不定可以得到正确的字符。
      

  3.   

    COM输出给你的是一个非托管内存的指针,你先用IntPtr接收,然后把里面的内容复制到BYTE数组中,再把它转为STRING就可以了。再不的话,就学2楼说的那样。
      

  4.   

    要转换为宽字符吧 System.Text.ASCIIEncoding转换一下
      

  5.   

                string utf8String = "中国";
                byte[] buffer1 = Encoding.Default.GetBytes(utf8String);
                byte[] buffer2 = Encoding.Convert(Encoding.Default, Encoding.Unicode, buffer1, 0, buffer1.Length);
                string strBuffer = Encoding.Default.GetString(buffer2, 0, buffer2.Length);这样总算可以了