上一节说到,使用GDAL的OGR生成的shapefile文件的编码类型是(87, ‘0x57’),查看[编码表](http://shapelib.maptools.org/codepage.html),可知,生成的shapefile文件编码为ACSI。
- 方案一(无法解决)
查看从MySQL得到的string类型变量featurename的值,可以监视到接受该featurename的值并没有出现乱码,因为C#的string类型默认编码为utf-16,所以认为只要将featurename的值转换为shapefile文件的默认编码936(GB2312)就好了。
Encoding ed = Encoding.GetEncoding("utf-16");
Encoding ed1 = Encoding.GetEncoding("gb2312");
if (fieldname.Contains("name"))
{
featurename = ed1.GetString(Encoding.Convert(ed, ed1, ed.GetBytes(featurename)));
}
得到的结果与原来一样,应该不是feature插入了不同的编码的问题。