使GDAL库支持中文路径或中文文件名的处理方法
之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图:
解决方法:
1. 在所有使用GDALAllRegister();语句后面加上一句CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");
2. 修改源码:将frmts/gdalallregister.cpp文件中GDALAllRegister()函数体内最上面加是一条CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");语句。
这里采用的是第一种方法,修改后的测试代码如下:
int test_gdal_support_chinese_path(int argc, char* argv[])
{
if (argc < 2) {
fprintf(stderr, "params fail\n");
return -1;
}
GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
GDALDataset* poSrc = (GDALDataset*)GDALOpen(argv[1], GA_ReadOnly);
if (poSrc == nullptr) {
std::cout << "input image error" << std::endl;
return -1;
}
int width_src = poSrc->GetRasterXSize();
int height_src = poSrc->GetRasterYSize();
int band_count_src = poSrc->GetRasterCount();
fprintf(stderr, "image width: %d, height: %d, bandCount: %d\n", width_src, height_src, band_count_src);
GDALDataType gdal_data_type = poSrc->GetRasterBand(1)->GetRasterDataType();
int depth = GDALGetDataTypeSize((GDALDataType)gdal_data_type);
fprintf(stderr, "depth: %d\n", depth);
GDALClose((GDALDatasetH)poSrc);
return 0;
}
结果如下图:
如果使用到OGRAllRegiser()函数,为了支持中文,那么也需要作同样的修改。
GitHub:https://github.com/fengbingchun/GDAL_Test
使GDAL库支持中文路径或中文文件名的处理方法的更多相关文章
- GDAL C#中文路径,中文属性名称乱码问题
昨天写的博客,将C#读取shp中文属性值乱码的问题应该可以解决,博客地址为:http://blog.csdn.net/liminlu0314/article/details/54096119,然后又测 ...
- Windows下Python中的中文路径和中文输出问题
这几天有个项目需要写一点类似于脚本的小程序,就用Python写了,涉及到中文路径和中文输出的问题,整理一下. 有一个问题我觉得需要先强调一下,在写Python程序的时候,一定保证编码是utf-8,然后 ...
- 【转】让apache支持中文路径或者中文文件
本帖最后由 狂人阿川 于 2013-4-12 19:13 编辑 今天在给一美国VPS客户调试他的程序的时候.发现他的网站有中文名称.貌似apache无法认识中文路径,火狐下面能下载他的文件,IE下面不 ...
- 修改GDAL库支持RPC像方改正模型
最近在做基于RPC的像方改正模型,方便对数据进行测试,修改了GDAL库中的RPC纠正模型,使之可以支持RPC像方改正参数. 下面是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...
- 改动GDAL库支持RPC像方改正模型
近期在做基于RPC的像方改正模型.方便对数据进行測试,改动了GDAL库中的RPC纠正模型,使之能够支持RPC像方改正參数. 以下是RPC模型的公式,rn,cn为归一化之后的图像行列号坐标,PLH为归一 ...
- 修改GDAL库支持IRSP6数据
使用GDAL库发现不能打开IRSP6的数据,不过看GDAL提供的文件格式里面却是支持IRSP6的数据的,具体可以参考网页http://www.gdal.org/frmt_fast.html.下面图1是 ...
- 论 Python Opencv 中文路径及中文文件名图像文件读取的两种方式
python 2中对于中文字符的处理可谓是诟病已久,虽然python 3 使用统一编码解决了中文字符串的问题,但在使用opencv中imread函数读取中文路径图像文件时仍会报错. 1) 借助nump ...
- VFS 上传文件到sftp 报错 包含中文路径 或者中文文件名称
之前用Apache commons-vfs工具进行ftp操作(FTP服务器是 FileZilla Server) 上传本地文件 到 ftp服务器上,如果文件名称 包含 中文 报错 org.apache ...
- phpexcel对于中文路径和中文名称的问题(有疑问)
phpexcel对于中文的文件名无法读取(我本地环境都是utf-8的编码) 是不是win系统识别都是gbk ?(需要把utf-8的字符串改为gbk) $file = "C:\\Users\\ ...
随机推荐
- webkit架构
简要的说,WebKit由三个模块组成:JavaScriptCore.WebCore 和 WebKit.WebKit作为了整个项目的名称. JavaScriptCore:是JavaScript解释器: ...
- 【[国家集训队] Crash 的文明世界】
先写一个五十分的思路吧 首先这道题有一个弱化版 [POI2008]STA-Station 相当于\(k=1\),于是就是一个非常简单的树形\(dp\)的\(up\ \ and\ \ down\)思想 ...
- python之使用__future__
Python的新版本会引入一些新的功能特性,但一般一部分的新功能可以在旧版本上测试,测试成功再移植到新的版本上,旧版本可以通过导入__future__模块的某些功能,测试新版本的新功能.(注意:fut ...
- Go testing 库 testing.T 和 testing.B 简介
testing.T 判定失败接口 Fail 失败继续 FailNow 失败终止 打印信息接口 Log 数据流 (cout 类似) Logf format (printf 类似) SkipNow 跳过当 ...
- javascript-对象搜索算法挑战
对象搜索算法挑战 function where(collection, source) { var arr = []; var status = null; // What's in a name? ...
- CS20Chapter2
constants操作 import tensorflow as tf a = tf.constant([2, 2], name='a') b = tf.constant([[0, 1], [2, 3 ...
- JDK代码中的优化 之 “avoid getfield opcode”
在查看String类源码时,常看到注释 /* avoid getfield opcode */ 如 trim()方法 public String trim() { int len = value.le ...
- 登录SQLServer报错:无法连接到DESKTOP-LDJHQGN
解决方法:下↓↓↓
- OpenID Connect Core 1.0(五)使用授权码流验证(下)
3.1.2.6 验证错误响应(Authentication Error Response) 验证错误响应是一个OAuth 2.0授权错误响应消息,是RP发送授权请求的消息,由OP授权终结点的响应返回. ...
- DBA手记(学习)-RAC环境下GES TX报警情况处理
GES ... TX-... GES的全称是Global Enqueue Service,用于RAC环境的全局共享队列.从提示信息可以看出,目前的锁定是DML引发的行级锁(TX). 检查v$lock_ ...