网上查询到很多关于 Android 中使用GDAL组件时中文字段与路径的问题,经过了长时间的折腾之后总结一种简单可行的方案,整理记录一下。原理就是获取value值的二进制数据,在调用java代码整合成字符串
//解决中文路径问题
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
gdal.SetConfigOption("SHAPE_ENCODING", "UTF-8");
DataSource ds = ogr.Open(path, 0);
if (ds == null) {
ToastUtil.show("打开文件失败");
return;
}
org.gdal.ogr.Layer oLayer = ds.GetLayerByIndex(0);
if (oLayer == null) {
return;
}
org.gdal.ogr.Feature oFeature = oLayer.GetNextFeature();
//String result = oFeature.GetFieldAsString(); 旧方法获取的value包含中文导致app crash
//解决中文字段问题
String result = new String(oFeature.GetFieldAsBinary("字段名称"), "GBK");
附上 android gdal 2.2.3 库下载:链接: https://pan.baidu.com/s/1--DN62eEMMREorbrRH3NLw 提取码: wk4e