以 UTF-8 格式获取 GeoServer 的 WFS 请求结果

Getting results of WFS request to GeoServer as UTF-8

我有以下代码使用 Apache http-client-4.1 库将 WFS 请求发送到本地 运行 GeoServer 实例:

        ThreadSafeClientConnManager connectionMngr = new ThreadSafeClientConnManager();
        DefaultHttpClient httpClient = new DefaultHttpClient(this.connectionMngr);
        HttpPost httpPost = new HttpPost(wfsUrl);
        httpPost.setEntity(new StringEntity(wsft, HTTP.UTF_8));

        log.debug("Submitting WSFT request: " + wsft);

        BasicResponseHandler responseHandler = new BasicResponseHandler();
        String result = httpClient.execute(httpPost, responseHandler);

        log.debug("Result of WSFT request: " + result);

我从 GIS 数据库中检索的数据采用 UTF-8 编码,并且找到了我希望找到的所有特征。但是,我的调试语句无法正确打印任何特殊字符,或者无法在我的应用程序(Spring MVC 网络应用程序)的前端正确显示。

我知道这些值已正确存储在我的 GIS 数据库中,因为我可以通过 SQL 客户端查看它们,并且它们按我预期的方式打印。我还可以看到使用特殊字符的道路名称等正在我的地图图层上正确打印,这表明 GeoServer 配置正确。

不是传入一个BasicResponseHandler,而是使用HttpClient.execute(HttpUriRequest)方法,其中returns一个HttpResponse然后使用EntityUtils.toString(HttpEntity, "UTF-8"),伪:

HttpResponse r = httpClient.execute(httPost)
String utf8encodedEntity = EntityUtils.toString(r.getEntity(), "UTF-8");