Opened 9 years ago
Closed 5 years ago
#6168 closed defect (wontfix)
GDAL Raster Attribute Table: GDALRATSetValueAsString() how to save Chinese characters (c#)?
Reported by: | Drasius | Owned by: | tamas |
---|---|---|---|
Priority: | normal | Milestone: | closed_because_of_github_migration |
Component: | CSharpBindings | Version: | 1.11.1 |
Severity: | normal | Keywords: | c#, RAT, GDAL, GDALRATSetValueAsString |
Cc: | tamas |
Description
I need help with GDAL. The string value with Chinese symbols is not readed/saved correctly (C#).
For SAVING grid value we using:
private static extern void GDALRATSetValueAsString(IntPtr handle, int row, int field, [In][MarshalAs(UnmanagedType.LPStr)] string value);
method (c#) to save string value, it seems that this method saves string as ANSI string.
For READING:
private static extern IntPtr GDALRATGetValueAsString(IntPtr handle, int row, int field);
In. Example my string "银行Flamwood C2" There is for methods to get value by pointer (use in GDALRATGetValueAsString metho):
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.
Q: So how I can get Unicode string with was saved (so I can get using this Marshal.PtrToStringUni(pointer)) or most likely how to save the Unicode string to GDALRAT (GDAL RAT - GDAL Raster Attribute Table)?
GDAL version: 1.11.1
I tried to set CharSet = CharSet.Unicode but id does not helped, still get not correct string:
[DllImport(GdalWrapper.GdalDLL, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)] private static extern void GDALRATSetValueAsString(IntPtr handle, int row, int field, [In][MarshalAs(UnmanagedType.LPStr)] string value);
Also you can find this question in stackoverflow.com: http://stackoverflow.com/questions/33295822/gdal-gdalratsetvalueasstring-how-to-save-chinese-characters-c
Change History (4)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Cc: | added |
---|---|
Component: | GDAL_Raster → CSharpBindings |
Owner: | changed from | to
comment:3 by , 8 years ago
There is solution how to support unicode characters in c# http://stackoverflow.com/questions/33295822/gdal-gdalratsetvalueasstring-how-to-save-chinese-characters-c
comment:4 by , 5 years ago
Milestone: | → closed_because_of_github_migration |
---|---|
Resolution: | → wontfix |
Status: | new → closed |
This ticket has been automatically closed because Trac is no longer used for GDAL bug tracking, since the project has migrated to GitHub. If you believe this ticket is still valid, you may file it to https://github.com/OSGeo/gdal/issues if it is not already reported there.
You should send your question to gdal-dev mailing list first instead of creating a bug report. Mailing list has also more readers. When it comes to your issue, unfortunately I can't help but let's hope someone else can.