restTemplate返回字符乱码问题

1.乱码原因返回的中文以ISO_8859_1编码返回,编码转换即可

new String(body.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

具体解决实例如下

            RequestEntity<String> gh = RequestEntity.post(new URI("")).header("GH", "").body("");

            ResponseEntity<String> exchange = restTemplate.exchange(gh, String.class);
            String body = exchange.getBody();
            String s = new String(body.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

另外乱码2情况,经过url编码的解码即可

URLDecoder.decode("", StandardCharsets.UTF_8.toString());
你的问题是关于 `restTemplate.exchange` 方法返回乱码的情况。通常情况下,乱码问题可能是由于字符编码不匹配导致的。在使用 `restTemplate.exchange` 方法发送请求时,你可以尝试以下方法来解决乱码问题: 1. 指定字符编码:可以在 `HttpHeaders` 中设置请求头的字符编码,例如: ``` HttpHeaders headers = new HttpHeaders(); headers.set("Content-Type", "application/json; charset=UTF-8"); HttpEntity<String> entity = new HttpEntity<>(requestBody, headers); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class); ``` 2. 设置字符编码过滤器:在你的应用程序配置中,可以添加一个字符编码过滤器来统一处理请求和响应的字符编码。例如,在 Spring Boot 中,可以在 `application.properties` 文件中添加以下配置: ``` spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true ``` 3. 手动处理响应的字符编码:如果仍然遇到乱码问题,你可以尝试手动处理响应的字符编码。例如,使用 `ResponseEntity` 对象获取响应的原始字节数组,然后将其转换为字符串时指定正确的字符编码,例如: ``` ResponseEntity<byte[]> response = restTemplate.exchange(url, HttpMethod.GET, null, byte[].class); String responseBody = new String(response.getBody(), StandardCharsets.UTF_8); ``` 希望以上方法能够帮助你解决 `restTemplate.exchange` 返回乱码问题。如果问题仍然存在,请提供更多的上下文信息,以便我能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值