c# 传中文字符给c++ 出现乱码问题

c++ char * 转换c# 一般直接string 或者Marshal.StringToHGlobalAnsi(“string”)为IntPtr  即可。

但是如果string包含中文,c++收到中文是乱码。

解决办法:把string转为byte[] 再放到内存指针即可。

byte[] encodedBytes=Encoding.UTF8.GetBytes("string");

IntPtr wordPtr = Marshal.AllocHGlobal(encodedBytes.Length);

Marshal.Copy(encodedBytes, 0, wordPtr, encodedBytes.Length);

最后将wordPtr传给c++即可。

你可能感兴趣的:(C#)