gdal库不支持中文路径和中文字段的解决方法
来源:互联网 发布:u盘安装ubuntu系统教程 编辑:程序博客网 时间:2024/06/13 10:59
今天遇到了个问题,在VS2008下面,用GDAL打开影像时,一直出现问题,调试了好半天,先是将QString类型的路径名转为char*,试了诸多方法,不管怎么转,就是提示错误,后来直接用char*指向路径名,还是出错,路径名不含中文时完全没问题。于是问题不在这里,问题在GDALOpen这个函数上,这就奇怪了,Linux下用的GDAL都不会出现这种问题,Windows的VS2008下就有这种问题。在网上找到一篇文章http://blog.csdn.net/liminlu0314/article/details/6610069,顿时解决了问题。
原因如下:用的是最新的GDAL1.9,GDAL中有一个函数CPLGetConfigOption( "GDAL_FILENAME_IS_UTF8", "YES" )判断,通过判断是否是UTF8的编码,而且指定的默认值还是UTF8编码,在含有中文路径的字符串大多数的编码应该是GBK的编码,这样,系统就将GBK的编码当做UTF8的编码来进行转换,结果就是汉字全部是乱码,导致的结果就是找不到文件,所以打不开。
解决方法:
不改变GDAL源代码,在自己调用GDALRegisterAll()和OGRAllRegiser()函数后,加上下面一句即可。
原因如下:用的是最新的GDAL1.9,GDAL中有一个函数CPLGetConfigOption( "GDAL_FILENAME_IS_UTF8", "YES" )判断,通过判断是否是UTF8的编码,而且指定的默认值还是UTF8编码,在含有中文路径的字符串大多数的编码应该是GBK的编码,这样,系统就将GBK的编码当做UTF8的编码来进行转换,结果就是汉字全部是乱码,导致的结果就是找不到文件,所以打不开。
解决方法:
不改变GDAL源代码,在自己调用GDALRegisterAll()和OGRAllRegiser()函数后,加上下面一句即可。
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");
GDAL不同的版本对中文的默认支持不一,有时候默认支持,有时候需要自己去设置。
这里分别写出C++和C#的设置代码
---------支持中文路径
C++: CPLSetConfigOption( "GDAL_FILENAME_IS_UTF8", "NO" );
C#:Gdal.SetConfigOption( "GDAL_FILENAME_IS_UTF8", "NO" );(C#中文路径大多数情况下不需要加这条语句,加了反而出错,情况比较复杂)
有时候需要写C#:Gdal.SetConfigOption( "GDAL_FILENAME_IS_UTF8", "YES" );虽然不知道为什么
-----------支持中文字段(属性字段乱码)
C++:CPLSetConfigOption( "SHAPE_ENCODING", "" );
C#:Gdal.SetConfigOption( "SHAPE_ENCODING", "" );
阅读全文
0 0
- gdal库不支持中文路径和中文字段的解决方法
- GDAL打开中文路径和读写中文字段的问题
- gdal不支持中文路径怎么办??
- GDAL\OGR C#中文路径不支持的问题解决方法
- GDAL\OGR C#中文路径不支持的问题解决方法
- vs2005不支持中文路径解决方法
- Django 中文路径不支持解决方法
- mysql不支持中文的解决方法
- json_encode 不支持中文的解决方法
- GDAL GDALOpen 打开中文路径的问题
- tomcat不支持中文路径和文件名问题的解决
- 文件链接下载时不支持中文的解决方法-让tomcat支持中文链接和中文目录
- 使GDAL库支持中文路径或中文文件名的处理方法
- json_encode不支持中文解决方法
- vc2008 fstream不支持中文路径的解决方案
- vc2008 fstream不支持中文路径的解决方案
- Tomcat不支持中文路径的解决办法
- vc2008 fstream不支持中文路径的解决方案
- 面试--操作系统--进程管理
- 华为、魅族手机无法打印 Log(Log.d() 和 Log.v() )
- 反转链表
- JQuery入门
- Object类的介绍
- gdal库不支持中文路径和中文字段的解决方法
- angularjs速成学习个人理解_1数据与模型绑定
- MySQL 数据类型
- 教你搭建SSM项目框架
- 1.1多媒体技术概述
- Linux ls命令详解
- 安卓编译的时候依赖包解析不了,老是下载不下来。Faled to resolve: com.squareup.retrofit2:converter-gson:2.3.0
- HDU-敌兵布阵
- 实际用户id(real user id)、有效用户id(effective user id)和保存的设置用户id(saved set-user-id)