在geoserver中使用shp文件作为数据源时,地图标注中很有可能出现乱码的问题。在网上查询发现是geoserver中的geotools插件对中文的支持不是很好,好几个版本都有这个问题。网上的解决办法大部分都是推荐把shp导入到postgreSQL中,但是配置postgreSQL也是个麻烦的问题,而且客户确实只需要显示地图就可以。
经过好几次的尝试,我发现以下步骤可以解决这个问题。
1.shp文件以及shp文件存放的路径都改成英文或者拼音。
2.新建Stores的时候编码方式设置成gbk 或者g2312
1
3.很关键的一步,在uDig中调整地图的样式,某个图层上点击右键—-change style,在simplefeature的label中选择要显示的中文字段,然后set font
这里的字体要选择中文字体,字符集选择Chinese—gb2312 ok。这一步之后在uDig中显示的应该也是汉字了。
image
image
4.还是在刚才的对话框中 选择xml 然后找到 font节点
<sld:Font>
<sld:CssParameter name="font-family">宋体</sld:CssParameter>
<sld:CssParameter name="font-size">12.0</sld:CssParameter>
<sld:CssParameter name="font-style">normal</sld:CssParameter>
<sld:CssParameter name="font-weight">bold</sld:CssParameter>
</sld:Font>
把<sld:CssParameter name="font-family">宋体</sld:CssParameter>和<sld:CssParameter name="font-weight">bold</sld:CssParameter>都删掉,
然后再检查该xml 不通过的话把出错位置的节点删掉。通过之后把直接复制样式添加到geoserver的style中。 在发布地图服务的时候选择该样式就ok了(注意选择了该样式之后,下面应该显示出该样式的图标) 如图:
image
否则的话 说明sld样式没设置好 需要重新配置! 之后保存发布就可以了。
最后地图效果:
image
经过好几次的尝试,我发现以下步骤可以解决这个问题。
1.shp文件以及shp文件存放的路径都改成英文或者拼音。
2.新建Stores的时候编码方式设置成gbk 或者g2312
1
3.很关键的一步,在uDig中调整地图的样式,某个图层上点击右键—-change style,在simplefeature的label中选择要显示的中文字段,然后set font
这里的字体要选择中文字体,字符集选择Chinese—gb2312 ok。这一步之后在uDig中显示的应该也是汉字了。
image
image
4.还是在刚才的对话框中 选择xml 然后找到 font节点
<sld:Font>
<sld:CssParameter name="font-family">宋体</sld:CssParameter>
<sld:CssParameter name="font-size">12.0</sld:CssParameter>
<sld:CssParameter name="font-style">normal</sld:CssParameter>
<sld:CssParameter name="font-weight">bold</sld:CssParameter>
</sld:Font>
把<sld:CssParameter name="font-family">宋体</sld:CssParameter>和<sld:CssParameter name="font-weight">bold</sld:CssParameter>都删掉,
然后再检查该xml 不通过的话把出错位置的节点删掉。通过之后把直接复制样式添加到geoserver的style中。 在发布地图服务的时候选择该样式就ok了(注意选择了该样式之后,下面应该显示出该样式的图标) 如图:
image
否则的话 说明sld样式没设置好 需要重新配置! 之后保存发布就可以了。
最后地图效果:
image