Springboot项目中中文乱码案例
使用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。不过这只是解决了这一个请求的乱码问题。
Springboot项目乱码统一解决办法
此外,如果已经有较多的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项目中的中文乱码问题。