GDAL的C#版本读取shp中,如果属性值中含有中文,读出来有可能是乱码的问题,根据SWIG生成的C#代码调试发现问题所在,在Ogr.cs文件中有这么一个函数,代码如下:

  internal static string Utf8BytesToString(IntPtr pNativeData){if (pNativeData == IntPtr.Zero)return null;int length = Marshal.PtrToStringAnsi(pNativeData).Length; //问题在这句byte[] strbuf = new byte[length];Marshal.Copy(pNativeData, strbuf, 0, length);return System.Text.Encoding.UTF8.GetString(strbuf);}

问题就出现在上面这句中,如果shp文件中dbf的编码是utf-8的时候,pNativeData实际上就是GDAL库读取到的一个const char的地址,这个时候,使用Marshal.PtrToStringAnsi函数返回的长度会变小,下面举个栗子:
如果GDAL的C++库返回的const char
pszValue = “中”,那么pNativeData的值实际上就是pszValue这个地址,且用UTF8编码的时候,pszValue指针对应的内存中的信息应该是"E4 B8 AD 00 XX XX",后面的XX表示其他的东西,只有前四个有用。
这时pNativeData的值就是上面这个"E4 B8 AD 00 XX XX"字符串的地址&#x

GDAL C#读取shp中文属性值乱码问题相关推荐

  1. gdal mysql乱码_GDAL读取S-57海图数据中文属性值乱码问题解决(续)

    上篇博文中的代码使用了函数wcstombs来进行处理,今天发现GDAL库里面提供了宽字节转单字节的函数,名字叫CPLRecodeFromWChar(这个函数需要libiconv库的支持,也就是在编译G ...

  2. GDAL读取S-57海图数据中文属性值乱码问题解决(续)

    上篇博文中的代码使用了函数wcstombs来进行处理,今天发现GDAL库里面提供了宽字节转单字节的函数,名字叫CPLRecodeFromWChar(这个函数需要libiconv库的支持,也就是在编译G ...

  3. GDAL读取S-57海图数据中文属性值乱码问题解决

    使用GDAL读取S-57海图数据时,对于属性表中的中文属性值读出来是乱码.如图1所示. 图1 S57海图数据中文乱码字段 通过调试代码发现,S-57文件中的中文是按照宽字节存储在文件中,而GDAL在读 ...

  4. GDAL C#中文路径,中文属性名称乱码问题

    昨天写的博客,将C#读取shp中文属性值乱码的问题应该可以解决,博客地址为:http://blog.csdn.net/liminlu0314/article/details/54096119,然后又测 ...

  5. C# richtextbox 自动下拉到最后 方法 RichTextBox读取txt中文后出现乱码

    C# richtextbox 自动滚动到最后  光标到最后 自动显示最后一行 private void richTextBox1_TextChanged(object sender, EventArg ...

  6. php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法

    以下是对php读取mysql中文数据出现乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下 1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了 解决方 ...

  7. Flash读取XML文件出现的中文乱码问题 flash读取外部中文时显示乱码的问题

    Flash读取XML文件出现的中文乱码问题    原因:中文乱码,不用说都是编码惹的祸.Flash是使用UTF-8编码的.而一般我们保存文本文件时(也就是XML文件),用的编码是GB2321.ANSI ...

  8. GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决

    GDAL/OGR 1.9.0又一个新的版本发布,但是又发现了一个对中文支持的问题,在之前的1.8.1版本开始,GDAL开始逐渐加入了对宽字节的支持,或者说是对各种编码的支持,GDAL在默认处理中,将所 ...

  9. Tinyxml一一利用tinyxml读取节点元素属性值

    有的xml文件中内容是按属性方式写入的,格式示例如下所示: <?xml version="1.0" standalone="yes" encoding=& ...

最新文章

  1. Debugging Ruby in VS Code
  2. 图像处理之基础---高斯低通滤波在指定区域画放大圆形图
  3. C#中的参数传递(转)
  4. python都可以干什么-python都能干嘛
  5. 使用SWig出现调用异常的情况
  6. 前端开发工程化探讨--基础篇(长文)
  7. activitemq与spring的整合
  8. Spring中 BeanFactory 与 FactoryBean 的区别
  9. 即时通讯学习笔记001---XMPP了解认知
  10. pytorch数据增强
  11. (七)洞悉linux下的Netfilteriptables:状态防火墙
  12. zul页面报org.xml.sax.SAXParseException
  13. Springboot未登录请求拦截器实现
  14. HTTP协议报文头部结构和Web相关工具
  15. ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
  16. 关于C++版本的海图渲染引擎MyS57Map
  17. 29岁华为员工工资曝光,揭露残酷真相:职场下半场,拼的就是这项能力!
  18. 大学python挂科补考_大学挂科后补考不过怎么样一种体验?
  19. 3D建模,打印正当时
  20. 用ping ,mtr ,traceroute 进行网络丢包分析

热门文章

  1. 扑克牌自定义排序,使用集合TreeSet实现实体对象排序,通过实现Comparable接口,重写compareTo比较器;
  2. 网络协议:TCP/IP协议,你看懂了吗?
  3. 洛谷——P2525 Uim的情人节礼物·其之壱
  4. jQuery天猫商品分类导航菜单
  5. css checkbox自动换行,CSS checkbox
  6. Mysql 时间类型整理
  7. BZOJ3252攻略——长链剖分+贪心
  8. oracle外部结合,浅谈Oracle外部文件
  9. 【李宏毅2020 ML/DL】P84 SAGAN, BigGAN, SinGAN, GauGAN, GANILLA, NICE | More About GAN 2020
  10. [转]SDN与OpenFlow技术简介