OpenGIS 软件中文乱码问题一览

GIS
最近处理数据,对乱码问题有了一些经验,总结一下。

uDig,版本1.1RC10a
uDig在读取shp文件属性数据的中文时,会出现乱码。原因是这个版本的uDig底层库GeoTools2.2.x在读取shp文件时默认的编码是ISO-8859-1。问题在于uDig的这个版本还没有提供更改默认编码的UI接口,所以仅仅在表面操作是没有办法解决这个问题的。如果实在需要解决,需要修改Geotools的org.geotools.data.shapefile.ShapefileDataStore,将默认编码更换为UTF-8或其它,编译重新打包。不过这样依然可能造成未来的乱码问题。这是uDig项目需要改进的。

GeoTools,版本2.3.4
GeoTools出现读取中文shp出现乱码的原因和uDig相同,好在GeoTools由于实在编程层面使用,可以进行手动设置。具体的方法为,初始化ShapefileDataStore后手动调用setStringCharset方法,设置为目标编码:

dataStore.setStringCharset(Charset.forName("UTF-8"));

也可以在dataStore的构造函数中传入。
另外,sinoly有一篇关于解决GeoTools读取基础地理信息系统网站数据的文章,对此有详细的解释。

GeoServer,版本1.5.3
当使用GeoServer以Shapefile作为数据源的时候,也有可能出现乱码问题。不过在创建ShapefileDataStore的时候,GeoServer的UI允许您选择它的默认编码,通常情况下填写正确后就不会有乱码的问题出现,因为GeoServer也是基于GeoTools的。如图:


shp2pgsql
shp2pgsql会由于编码不正确而导致退出。对此,需要在使用shp2pgsql的时候通过-W 参数指定shp文件的编码。
Tags: OpenGIS  

2 Responses to "OpenGIS 软件中文乱码问题一览"

Leave a Reply

Powered By Z-Blog 1.8 Arwen Build 81206 Themes Basic By Azrael Designed By Ben Swift
Login Feed Rss