使GDAL库支持中文路径或中文文件名的处理方法
2016-11-16 13:43
453 查看
之前生成的gdal 2.1.1动态库,在通过命令行执行时,遇到有中文路径或中文图像名时,GDALOpen函数不能正确的被调用,如下图:
解决方法:
1. 在所有使用GDALAllRegister();语句后面加上一句CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");
2. 修改源码:将frmts/gdalallregister.cpp文件中GDALAllRegister()函数体内最上面加是一条CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");语句。
这里采用的是第一种方法,修改后的测试代码如下:
结果如下图:
如果使用到OGRAllRegiser()函数,为了支持中文,那么也需要作同样的修改。
GitHub:https://github.com/fengbingchun/GDAL_Test
解决方法:
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\OGR C#中文路径不支持的问题解决方法
- GDAL\OGR C#中文路径不支持的问题解决方法
- GDAL\OGR C#中文路径不支持的问题解决方法
- 让tomcat支持中文路径名和中文文件名的方法
- IIS服务器不支持中文文件名的解决方法
- 让Tomcat支持中文路径名和中文文件名
- 让Tomcat支持中文路径名和中文文件名
- 英文版系统的 IIS支持中文路径及中文文件名
- Tomcat中中文文件名不支持的解决方法
- C#编程技巧之常用文件名、路径处理方法
- 关于MySQL数据库的中文处理:支持UTF-8的设置方法
- Serv-U 10支持中文路径和中文文件名
- 【转】让Ogre支持中文路径与中文文件名
- 让tomcat支持中文文件名和路径
- 让Tomcat支持中文路径名和中文文件名(整理自网络)
- ie 无法下载中文名文件 解决方法 【修改IIS5注册表可以支持中文文件名】
- IIS服务器不支持中文文件名的解决方法
- smartupload中下载中文文件名的处理方法
- 关于MySQL数据库的中文处理:支持UTF-8的设置方法