关于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();
这样的修改,就使我们读取文件的编码使用了我们设置的方式。
运行一下程序看看,是不是字段名也可以支持中文了呢,呵呵。
希望本文可以帮助到某些人。
浙公网安备 33010602011771号