对于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; //客户不使用该字段
        }

相关文章:

  • 2022-02-09
  • 2021-12-27
  • 2021-10-05
  • 2022-12-23
  • 2022-01-08
  • 2021-11-16
  • 2021-09-06
猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案