gdal无法读取中文标题的图片的解决办法(结合Qt)

15 篇文章 2 订阅
11 篇文章 1 订阅
本文介绍了一种有效方法,即通过QString转utf-8并设置GDAL使用UTF-8读取,以解决GDAL处理中文文件名的问题。包括QString转utf-8的具体步骤和GDAL配置项的设置,适用于GIS开发者遇到的编码难题。
摘要由CSDN通过智能技术生成

gdal是gis领域一款常用的软件。但是如果图片的名称含有中文,gdal就难以将其打开。网上有许多帖子针对这个问题,比如https://blog.csdn.net/liminlu0314/article/details/6610069 但是经我亲测,并不能解决问题。下面给出我亲测可行的办法。

根据网上一篇文档所述(作者平芜泫public@korepwx.com),QString以utf-16的格式存储字符串。但是gdal只是根据文件名是否是utf-8编码,来决定如何读取文件名。所以,只要把qstring转化为utf-8编码的字符串,同时把设置gdal用utf-8来读取文件名即可。

1 qstring转化为utf-8

一般首先想到qstring.toLatin1()。latin1是西欧多字节编码,不是utf-8,故不正确;

 正确的办法是

QString qstr;//文件名
QByteArray qa = QTextCodec::codecForName("utf-8")->fromUnicode(qstr);//qa现在存储的是文件名的utf-8编码
GDALDataset* img = (GDALDataset *)GDALOpen(qa.data(), GA_ReadOnly);
.....

2 gdal方面,在注册gdal之后(GDALAllRegister),立刻设置:

GDALAllRegister();          //GDAL所有操作都需要先注册格式
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");	//支持中文路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值