众所周知,中文环境下(VS2010 C++工程编码为多字节编码),在使用1.8.0版本以后的GDAL打开中文路径下的影像文件(如GeoTiff文件)时,

需对中文文件路径做特殊处理,有2种方法:(我使用的GDAL库添加了HDF4、HDF5格式支持)

(1)临时设置GDAL为本机编码环境

GDALAllRegister();
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");//设置为非UTF-8编码
GDALDataset* modisDataset = (GDALDataset*) GDALOpen("D:\\bigData\\hdf\\天天\\MOD04_L2.A2012001.0320.051.2012001212607.hdf", GA_ReadOnly);/*Open HDF Success*/

(2)将多字节编码的中文路径转为UTF-8编码,再传给GDAL

char* pszHDFSource = local_to_utf8("D:\\bigData\\hdf\\天天\\MOD04_L2.A2012001.0320.051.2012001212607.hdf");//UTF8 encoding pszHDFSource is D:\bigData\hdf\澶╁ぉ\MOD04_L2.A2012001.0320.051.2012001212607.hdf
GDALAllRegister();
GDALDataset* modisDataset = (GDALDataset*) GDALOpen(pszHDFSource, GA_ReadOnly);/*Open HDF Failed*/

今天写了一个从MODIS HDF格式数据中提取子数据集到GeoTiff文件的小工具,在打开中文路径下的HDF文件时遇到一个比较奇怪的问题:

p1.使用第一种方法时,可以打开中文路径下的GeoTiff、HDF数据文件,也可以向中文路径下写出GeoTiff数据文件;

p2.使用第二种方法时,可以打开中文路径下的GeoTiff数据文件,也可以向中文路径下写出GeoTiff数据文件,但是无法打开中文路径下的HDF数据文件;

现象1说明上述两种中文路径解决方法不等价;现象2说明我们自己写的local_to_utf8()函数是没有问题的,问题可能出在GDAL与HDF库的交互过程中。

原因猜测:GDAL在调用HDF库时,是否对路径编码做了改变?或者HDF库接收到非本机编码的路径后,是否又将其转为了本机编码或者其他格式的编码?

又或者在编码转换过程中出现了什么差错?

由于我并没有去看HDF的源码,因此上述猜测可能并不准确,希望有人遇到这样问题的人可以细致分析和研究一下。

GDAL打开HDF格式时遇到的中文路径问题(未解决)相关推荐

  1. SolidWorks打开STEP格式文件总提示“默认模板无效”怎么解决

    SolidWorks打开STEP格式文件总提示"默认模板无效"怎么解决 原因[默认模板无效,含有中文文件名或者路径] 原因[默认模板无效,含有中文文件名或者路径] 打开step等格 ...

  2. 注册DirectShow filter时应该注意中文路径

    注册DirectShow filter时应该注意中文路径 2010-01-15 16:39:57|  分类: C++|字号 订阅 昨天封装了一个DirectShow Source Filter,使用R ...

  3. word打印机显示服务器脱机,电脑中打开word文件时总显示打印机没有响应的解决方法...

    我们经常会使用word来编辑文档,不过近日有不少小伙伴在电脑中打开word文档的时候,却总是显示"打印机没有响应,但是程序可以在没有打印机信息的情况下继续运行,是否继续等待打印机响应?&qu ...

  4. cad显示驱动程序文件已丢失或损坏_win7系统下打开AutoCAD 2014时显示驱动程序文件.hdi丢失如何解决...

    AutoCAD 2014是一款专业性很强的3D制作软件,很多win7系统用户会安装使用,不过在安装完成之后,发现打开AutoCAD 2014时就显示驱动程序文件.hdi丢失,导致AutoCAD 201 ...

  5. svn不支持中文路径问题的解决

    作者:朱金灿 来源:http://blog.csdn.net/clever101 svn的授权文件authz默认是不支持中文路径的,因此在精确控制中文文件夹的授权时往往会出错.要解决这个问题,需要用U ...

  6. WebSVN(2.3.1版本)中文注释以及中文路径乱码的解决方法【未完待续】

    一.含有中文源码的显示: command.php中的toOutputEncoding函数对字符串编码判断不正常 function toOutputEncoding($str) {global $con ...

  7. Python cv2读取/存储图片中含中文路径失败的解决方法

    目录 一.问题 二.代码 一.问题 cv2对于中文路径的图片读取值为None,可以采用cv2.imdecode和np.fromfile来读取,以避免中文路径的问题: cv2对于中文路径的图片存储失败, ...

  8. 电脑上打开chm文件时系统提示:不能打开文件:mk:@MSITStore:(文件路径)的解决方法!!

    1.看看你的OS的语言设置 和chm文档的语言是不是一致的 ? 如果不一致就会打不开得到上面这样的错误.比如如果下载的chm文档是中文的,那么到[控制面板]中看看那个"语言和区域" ...

  9. SolidWorks打开step格式后零件名变成下划线的解决方法

    打开SolidWorks,打开选项,找到"系统选项"中的"导入",将"文件格式"中的启用3DInterconnect前的√取消即可.

  10. 电脑微信双开 中文路径报错解决

    参考网上文章 自己操作了一遍 流程如下 开始之前先关闭电脑微信 首先说下怎么微信双开 找到微信的桌面快捷方式 右键属性 复制上述路径 新建文本文档 如下编写 start F:\软件\微信\安装目录\W ...

最新文章

  1. 网易创新企业大会倒计时,云信将发布新一代音视频技术架构
  2. int、bigint、mediumint、smallint、tinyint的比较
  3. 一个能够编写、运行SQL查询并可视化结果的Web应用:SqlPad
  4. 1148 Werewolf - Simple Version 甲级
  5. 【CodeForces - 674B 】Bear and Two Paths(贪心,思维,水题)
  6. 深入研究Python 世界的规则,我的薪资直接翻倍
  7. Linux系统:centos7下搭建ZooKeeper3.4中间件,常用命令总结
  8. (转)Android中JNI编程的那些事儿
  9. 深入学习js之——原型和原型链
  10. Xtrareport 交叉报表
  11. WPF Grid布局
  12. linux安装nodejs binaries包以及设置npm国内镜像
  13. 查看安卓app包名的5种方法
  14. Ubuntu 安装 OpenRefine 并配置启动图标
  15. Error:field larger than field limit(131072)解决方法
  16. MongoDB 极简入门实践
  17. Windows Filtering Platform Windows筛选平台
  18. 浩辰3D软件中装配零件的操作技巧
  19. Ubuntu安装中文字体
  20. 《计算机系统与网络安全技术》一页纸开卷/期末复习内容

热门文章

  1. Mac电脑上怎么添加密码提示?操作教程来啦!
  2. linux目录结构和份文件系统
  3. Java Design Pattern(Factory,Singleton,Prototype,Proxy)
  4. Java学习笔记——dubbo服务之底层通讯协议Protocol
  5. linux网络测试(必会)
  6. Python web 框架:web.py
  7. Java虚拟机(三)垃圾标记算法与Java对象的生命周期
  8. Bootstrap 后台模板-AdminLTE
  9. 教你几招——交换变量数值
  10. [物理学与PDEs]书中的错误指出