• SharpMap应用开发——中文乱码问题终极解决方案


    前后做过多个基于SharpMap的应用开发,期间有两次遇上中文乱码问题,记录于此,以飨众人。

    1、读取shapefile属性时中文乱码

    解决方案:在实例化shapefile图层对象后,指定其编码方式,见如下示例代码。

    public ILayer Create(string layerName, string connectionInfo)
    {
        ShapeFile shapeFileData = new ShapeFile(connectionInfo);
        shapeFileData.Encoding = Encoding.GetEncoding("gb2312"); 
        VectorLayer shapeFileLayer = new VectorLayer(layerName, shapeFileData);
        return shapeFileLayer;
    }
    

    2、使用ExecuteIntersectionQuery方法时,获取的FeatureDataSet结果中的Table成员的列名称中文乱码

    解决方案:修改SharpMap源码中DbaseReader.cs类的ParseDbfHeader方法,将ColumnName的默认编码UTF7修改为支持中文编码的方式,如下代码所示。

    //DbaseColumns[i].ColumnName = Encoding.UTF7.GetString((br.ReadBytes(11))).Replace("\0", "").Trim();
    DbaseColumns[i].ColumnName = Encoding.GetEncoding("gb2312").GetString((br.ReadBytes(11))).Replace("\0", "").Trim();
    

    实际上,在使用MapBox的Query、QueryBox工具时候,最终也会调用ExecuteIntersectionQuery方法,所在是使用Query工具时也会出现这个问题。

    对于第二个问题,只能采取修改源码的方式,所以建议采用SharpMap的开发人员在项目中尽量用其源码,发现有问题,可以一探究竟也方便修改。若是采用发布的DLL,一旦发现有问题,那可真是没辙!

  • 相关阅读:
    Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)
    IIS7如何实现访问HTTP跳转到HTTPS访问
    C#调用PB写的com组件dll
    C# winform程序免安装.net framework在XP/win7/win10环境运行!
    文件上传漏洞
    OWASP TOP 10
    sql
    ASCII码查看
    sql注入--mysql
    sql注入--access
  • 原文地址:https://www.cnblogs.com/hans_gis/p/2556153.html
Copyright © 2020-2023  润新知