我需要GDAL的帮助.带有中文符号的字符串值未被正确读取/保存(C#).
对于SAVING网格值,我们使用:
private static extern void GDALRATSetValueAsString(IntPtr handle,int row,int field,[In] [MarshalAs(UnmanagedType.LPStr)] string value); 方法(c#)保存字符串值,似乎这个方法将字符串保存为ANSI字符串.
阅读:
private static extern IntPtr GDALRATGetValueAsString(IntPtr handle, int row, int field);
Run Code Online (Sandbox Code Playgroud)
在.示例我的字符串"银行Flamwood C2"有通过指针获取值的方法(在GDALRATGetValueAsString方法中使用):
var pointer = GDALRATGetValueAsString(GDALRasterAttributeTableH, row, field);
a) var b = Marshal.PtrToStringUni(pointer); // value: "??????2"
b) var a = Marshal.PtrToStringAnsi(pointer); // value: "??Flamwood C2"
c) var c = Marshal.PtrToStringAuto(pointer); // value: "??????2"
d) var d = Marshal.PtrToStringBSTR(pointer); //Throws an error out of memory.
Run Code Online (Sandbox Code Playgroud)
问:所以如何保存Unicode字符串(所以我可以使用这个Marshal.PtrToStringUni(指针))或者很可能如何将Unicode字符串保存到GDALRAT(GDAL RAT - GDAL栅格属性表)?
GDAL版本:1.11.1 …