GDAL2.2.4完美解决中文乱码方案,VS2010编译

本文介绍了在VS2010环境下编译GDAL2.2.4库时遇到的中文乱码问题,并提供了一个全面的解决方案。通过修改.NET平台的字符串封送方式,以UTF8代替默认编码,成功解决了函数传入中文字符时的乱码问题,确保了在C#中使用GDAL处理中文路径、Shape文件名、图层名、字段名等时的正确显示。文章提供了修订版DLL下载链接。
摘要由CSDN通过智能技术生成

       参考各位网友研究成果,在VS2010环境成功编译GDAL2.2.4库,包括CSharp支持库,发现中文乱码问题没有根本性解决,通过网友们研究,解决了中文路径,Shape文件名、图层名、字段名等中文支持问题,但是在部分函数需要传入中文时,仍然乱码未解决。

详见

【C#】C#中使用GDAL3(二):Windows下读写Shape文件及超详细解决中文乱码问题 - 泥头 - 博客园j

       经过反编译跟踪和查阅资料,这个问题的根本原因是由于.Net平台在互操作时封送字符串的处理方式定义导致的,资料见.Net帮助主题互操作的封送处理部分。

 平台对String的默认封送处理方式是以默认编码指针封送,但是GDAL内部使用UTF8编码,UTF8与GB2312转换存在众所周知的奇数乱码问题,所以导致函数传入中文字符内部无法识别,上面网友给出的方案仅适用参数中文字符数为偶数的情况,奇数时仍然会报错。

完美解决方案是修改字符串的封送方式,函数调用关系如下

OSGeo.OGR.Feature.GetFieldAsString(string field_name)

[DllImport("ogr_wrap", EntryPoint = "CSharp

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值