C#调用C++的dll时汉字出现乱码问题

分类:编码百科| 发布:camnprbubuol| 查看: | 发表时间:2011/4/8

Win32API.CommonType.USER user = new Win32API.CommonType.USER();

                byte[] byt = new byte[37];

                #region 给unsafe区域变量赋值
                unsafe
                {
                    byte[] bytUN = System.Text.Encoding.GetEncoding("GB2312").GetBytes(strUserName);
                    for (int i = 0; i < bytUN.Length; i++)
                    {
                        user.szName[i] = (sbyte)bytUN[i];
                    }

               }

byte[] buf = new byte[Marshal.SizeOf(user)];
                IntPtr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buf, 0);
                Marshal.StructureToPtr(user, ptr, true);

 

乱码是啥形式的,比如在Unicode情况下,女对应PE.也叫变成乱码了,但是其实是解码方式不同,C++默认开发如果是用VS,那么就是GB2312的,你试一试C#。

你dll能用unicode重新编译么,然后c#也配上unicode应该就统一了

 

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/314.html