c#gdal在feature.GetFieldAsString(index)时读取韩文的一半列

时间:2018-08-21 00:39:14

标签: gdal ogr

库:GDAL 2.3.1 x64bit(已编译,仅使用4个dll文件。)
语言:C#.net 4.5.2
want:读取shp的dbf文件中的所有列数据 dbf的编码:CP949,但是UTF-8是相同的错误

使用gdal(OGR)阅读韩语时,
另一列获取所有其他数字列都很好,
但我会尝试阅读韩文(列名是英语,只是数据是韩文)
获取一半的数据,如何获取所有数据?
我应该在GDAL源代码中修复什么?或其他解决方案?

这是我的代码

// ~~~~ some Create object
dsTarget = drv.Open(linkFileName, 0);
Layer laTarget = null;
Feature featTarget;
Geometry geomTarget;

// dir.shp value
Layer laSource = dsSource.GetLayerByIndex(0);
Feature featSource = null;
//Geometry geomSource;
int i = 0;

while((featSource = laSource.GetNextFeature()) != null)
{
  string geom_wkt = "";
  using(featSource)
  {
    // get attrbute value/geom from feature
    // and set dictionary
    Dictionary<string, string> dic = new Dictionary<string, string>();

    FieldDefn fdef;
    for(int iField = 0; iField < featSource.GetFieldCount(); iField++)
    {
      using(fdef = def.GetFieldDefn(iField))
      {
        if(featSource.IsFieldSet(iField))
        {
          // this is my problem
          // 
          string fld = featSource.GetFieldAsString(iField);
          Console.WriteLine(fld);
        }
        else
        {
          dic.Add(fdef.GetNameRef(), "");
        }
      }
    }
    //~~~ do something
  }
}

数据和readResult示例:

image

我可以读取字符串列的另一个数字数据, 注意:没有其他方法可以读取值。
我不能对GetFieldAsbinary或其他任何东西进行罚款...

0 个答案:

没有答案