发布:2022/3/17 14:40:14作者:管理员 来源:本站 浏览次数:1847
使用idea搭建了一个springboot项目,版本号为1.5.22.ELEASE,只选择了spring-boot-starter-web依赖,自己编写controller之后,返回中文却乱码了,controller源码如下:
@RestController class TestController { @GetMapping("test") String test() { "测试乱码111111abc" } }
测试后返回结果如下:
原因很明显,可以从上图中看出来:http响应的编码格式不对,设置为utf-8即可。
在网上找到的方式,大都是设置以下两个配置,然而并没有用:
spring: http: encoding: charset: utf-8 force: true
http响应头中的编码为 charset=ISO-8859-1,我们需要改变为UTF-8,所以我们可以通过在controller中设置响应编码的方式解决,controller源码可改为如下:
@RestController @RequestMapping(produces = "application/json;charset=UTF-8") class TestController { @GetMapping("test") String test() { "测试乱码111111abc" } }
最终解决了乱码问题,请求响应如下图:
返回的charset也变成了UTF-8。不过这只是解决了这一个请求的乱码问题。
此外,如果已经有较多的controller,这样设置很不方便。还可以通过添加一个StringHttpMessageConverter的方式,统一设置,源码如下:
package com.jvm123.api.config /**
*
* @author yawn < http://jvm123.com >
*
*/ @Configuration @EnableWebMvc class MvcConfig extends WebMvcConfigurerAdapter { @Override void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(new StringHttpMessageConverter(StandardCharsets.UTF_8)) super.configureMessageConverters(converters) } }
设置后的请求结果如下:
这样就统一解决了springboot项目中的中文乱码问题。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4