gpt4 book ai didi

java - HTTPGet 响应字符串中出现的 unicode 字符

转载 作者:行者123 更新时间:2023-12-02 12:07:23 25 4
gpt4 key购买 nike

我有一个用于集成数据的实用程序,但在使用“à”等特殊字符时遇到了问题。下面是问题所在的方法。响应来自 API,采用 xml 格式。

    protected String getStringHttpContent(URI url, Map<String,String> headerParameters) throws IOException
{
HttpGet request = new HttpGet(url);
for(String parameter : headerParameters.keySet())
request.setHeader(parameter, headerParameters.get(parameter));

CloseableHttpResponse response = getClient().execute(request);
dumpHeaders(response);
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuffer sb = new StringBuffer();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
response.close();
return sb.toString();

}

响应字符串中 njàmientill 的结果是 njàmientill。我尝试更改编码,但结果保持不变。任何建议将不胜感激。

最佳答案

确保您使用端到端(通过整个链)的 UTF-8 编码。这包括您的网页和用户输入(例如,如果它来自 html 表单)、在页面上设置 UTF-8、Web 服务(web.xml、sun-web.xml 等)。此外,入站 HttpRequest 应包含 header 属性“charset”,例如。 “内容类型:text/html;字符集=utf-8”。您配置服务器端和客户端的方式取决于您使用的技术(我不知道)。

编辑:关于您的评论,即使您是客户端,您也应该设置内容类型来定义您期望从服务器获得的内容类型(因为这可能能够提供不同的内容)相同 URL 的内容)。

请尝试配置您的 HttpGet:

request.setHeader(HttpHeaders.CONTENT_TYPE, "application/xml; charset=utf-8");

或者(如果服务器很旧):

request.setHeader(HttpHeaders.CONTENT_TYPE, "text/xml; charset=utf-8");

更好,也许指定接受 header 和接受的字符集:

request.setHeader("Accept-Charset", "utf-8");
request.setHeader("Accept", "application/xml");

如果这些都不起作用,我建议您在此处显示您的 Postman 查询或执行 Wireshark 捕获以查看实际的请求和响应,并列出 headerParameters 映射的内容。否则我们无法为您提供更多帮助(在我看来,您的其余代码看起来不错)。

关于java - HTTPGet 响应字符串中出现的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46799027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com