对于C#结构体包含中文和c程序交互时乱码的问题,应该在C#的结构体定义时指定字符集

代码
 //
        
// 摘要:
        
//     用于在结构中出现的内联定长字符数组。与 System.Runtime.InteropServices.UnmanagedType.ByValTStr
        
//     一起使用的字符类型由应用于包含结构的 System.Runtime.InteropServices.StructLayoutAttribute 的
        
//     System.Runtime.InteropServices.CharSet 参数确定。
        
//     应始终使用 System.Runtime.InteropServices.MarshalAsAttribute.SizeConst
        
//     字段来指示数组的大小。

        [StructLayout(LayoutKind.Sequential,CharSet
=CharSet.Unicode), Serializable]
        
public struct MY_STRUCT
        {
            
public double x;          //点的经度坐标
            public double y;          //点的纬度坐标
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
            
public string Name;        //Name[40]; //名称

            
public int PointID;  //点的ID号
            public int TypeCode; //客户不使用该字段
        }


 

posted on 2010-03-19 15:10  白沙河  阅读(747)  评论(0编辑  收藏  举报