springboot全局字符编码设置解决乱码问题

2025-05-29 0 17

有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况。那怎么解决呢?

springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你。

1、在application.properties中设置

?

1

2

3

4

5
#编码格式

spring.http.encoding.force=true

spring.http.encoding.charset=UTF-8

spring.http.encoding.enabled=true

server.tomcat.uri-encoding=UTF-8

如果出现乱码问题,这种方式解决的可能性不大,但可以尝试一下,希望还是要有的,万一解决了呢,因为查看源码发现springboot默认的编码格式就是UTF-8

springboot全局字符编码设置解决乱码问题

2、自己手写编码过滤器

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
//字符编码过滤器

@WebFilter(urlPatterns = "/*",filterName = "CharacterEncodingFilter")

public class CharacterEncodingFilter implements Filter{

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) servletRequest;

HttpServletResponse response = (HttpServletResponse) servletResponse;

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

filterChain.doFilter(request , response);

}

@Override

public void destroy() {

}

}

如果这种方式也解决不了问题的话,只能使用最后一种方式了。

3、使用java配置写一个字符编码配置类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
/**

* 中文乱码解决

*/

@Configuration

public class CharsetConfig extends WebMvcConfigurerAdapter {

@Bean

public HttpMessageConverter<String> responseBodyConverter() {

StringHttpMessageConverter converter = new StringHttpMessageConverter(

Charset.forName("UTF-8"));

return converter;

}

@Override

public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

super.configureMessageConverters(converters);

converters.add(responseBodyConverter());

}

@Override

public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {

configurer.favorPathExtension(false);

}

}

StringHttpMessageConverter是一个请求和响应信息的编码转换器,通过源码我们发现默认编码ISO-8859-1,不是UTF-8,所以我们只要通过上述配置将请求字符串转为UTF-8 即可

springboot全局字符编码设置解决乱码问题

WebMvcConfigurerAdapter 是springmvc的一个配置支配器类,我们可以实现我们感兴趣的方法。

springboot全局字符编码设置解决乱码问题

其实现的接口WebMvcConfigurer 定义了一些回调方法为springmvc提供一个通道通过java基本的配置。

springboot全局字符编码设置解决乱码问题

到此这篇关于springboot全局字符编码设置解决乱码问题的文章就介绍到这了,更多相关springboot 全局字符编码内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/qq_39654841/article/details/81156695

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 springboot全局字符编码设置解决乱码问题 https://www.kuaiidc.com/116953.html

相关文章

发表评论
暂无评论