Apache httpclient HTTPGET解码

问题描述 投票:1回答:1

我正在使用一个API,该API以UTF-8编码德语变音符号。我的应用程序需要对这些字符进行解码和编码。编码不是问题,完全可以。为此,我在创建新的StringEntity并将其添加到请求中时设置了一个字符集,如下所示:

    HttpPost request = new HttpPost(getUrl);
    if(useProxy) {
        RequestConfig config = RequestConfig.custom()
                .setProxy(proxy)
                .build();
        request.setConfig(config);
    }
    request.addHeader("APIKey", apiKey);
    request.addHeader("Accept", "application/json");
    request.addHeader("Content-type", "application/json; charset=UTF-8");
    request.setEntity(new 
    StringEntity(JsonUtils.getJsonFromObject(nachricht), "UTF-8"));

[所有特殊字符(如变音符)均已正确发送并存储在后端。但是,当我想检索这些数据时,会导致出现一些如下所示的错误:enter image description here

小字符有效,但大写字母无效。响应或HTTPGET请求似乎是ISO_8859_1编码的。如何将HTTPGET的字符集设置为UTF-8?我已经尝试过像这样设置requestheader:

request.addHeader("Content-type", "application/json; charset=UTF-8");

并像这样解码响应的内容:

byte[] bytes = EntityUtils.toString(responseEntity).getBytes();
String responseString = new String(bytes, "UTF-8");

但是由于响应的字符集似乎是错误的,因此使用UTF-8解码会导致错误。

我正在使用一个API,该API以UTF-8编码德语变音符号。我的应用程序需要对这些字符进行解码和编码。编码不是问题,完全可以。为此,我设置了一个字符集...

java api utf-8 apache-httpclient-4.x
1个回答
0
投票

我遇到了同样的问题,并通过将参数“ UTF-8”传递给responseEntity来解决它:

© www.soinside.com 2019 - 2024. All rights reserved.