none
C#应用C DLL时的字符转换的问题 RRS feed

  • 问题

  • C#调用C写的DLL , 首先C#调用一个C函数 (返回值为PWSTR) 返回值是一个指向字符串的托管指针,利用Marshl.PtrToStringUni可以正确得显示出来,然后将这个string 传人另一个C函数中(参数为PSTR) 问题出来了,英文可以正常显示但中文是乱码 请问该如何转换
    2013年5月15日 10:40

答案

  • 很明显是Unicode字符串,传给PSTR乱码很正常,编码不同。你的C函数需要有一个宽字符版本,如果你的C函数只支持一个MBCS编码(比如Big5或者GB2312)你需要把Unicode字符串转成对应编码再传给函数。



    Visual C++ MVP

    • 已标记为答案 Bin_To_Bin 2013年5月16日 5:28
    2013年5月15日 18:47
    版主