代码改变世界

关于sharp map 的中文编码问题 (续)

2010-05-20 22:11  废墟中的垃圾  阅读(531)  评论(2)    收藏  举报

上一篇文章已经解决了读取数据中文乱码的问题了。

 

但是接下来的问题来了,我们发现读取文件的字段名的时候还是乱码。而且这个真的不是通过前段代码的设置就可以完成的。

 

好了 废话不多说,开始解决问题。还是读取Sharp map 的源程序。

 

在读取文件header的时候 在SharpMap.Data.Providers.DbaseReader 里面的方法 ParseDbfHeader 是读取字段。

 

其中有这样一段

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

这里就很明显看出来问题了,Sharp map 对于文件头的读取使用的是 utf7 所以只要这里修改一下,变成

DbaseColumns[i] = new DbaseField();
DbaseColumns[i].ColumnName = this._Encoding.GetString((br.ReadBytes(11))).Replace("\0", "").Trim();

这样的修改,就使我们读取文件的编码使用了我们设置的方式。

运行一下程序看看,是不是字段名也可以支持中文了呢,呵呵。

 

希望本文可以帮助到某些人。