GeoServer加载Shapfile文件,若字段为中文,经常会出现显示乱码问题,即使在Geoserver中设计它的charset也不行。究其原因,责不在GeoServer。Geoserver使用GeoTools读取shapefile文件,中文乱码的罪魁祸首就是它。不过,从GeoTools的代码来看,它正是为了解决多种编码方案才改的代码,不过,奇怪也在这,恰恰改之后读取中文等多字节编码就出错。这里给出两种解决方案:
1. Shapefile -> PostGis。利用PostGis将shapefile转入数据库存取,在shp2pgsql中可以设置shapefile的编码,可方便转入数据库中为正确的编码。
2.修改GeoTools源代码。如果一定、必须、非得使用shapefile,只能使用这一招。幸好,代码修改量不大,改几处关键代码即可。笔者曾经试验成功过。