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"));
另外,sinoly有一篇关于解决GeoTools读取基础地理信息系统网站数据的文章,对此有详细的解释。
GeoServer,版本1.5.3
当使用GeoServer以Shapefile作为数据源的时候,也有可能出现乱码问题。不过在创建ShapefileDataStore的时候,GeoServer的UI允许您选择它的默认编码,通常情况下填写正确后就不会有乱码的问题出现,因为GeoServer也是基于GeoTools的。如图:

shp2pgsql
shp2pgsql会由于编码不正确而导致退出。对此,需要在使用shp2pgsql的时候通过-W

Recent Comments