1. 程式人生 > 程式設計 >springboot全域性字元編碼設定解決亂碼問題

springboot全域性字元編碼設定解決亂碼問題

有時候我們會發現這種問題,明明已經設定了字元編碼過濾器但是還會有亂碼的情況出現,這個問題令我們很是頭疼,我之前也遇到過這種情況。那怎麼解決呢?

springboot編碼格式設定有三種方式,不管使用哪種方式,總有一款適合你。

1、在application.properties中設定

#編碼格式
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、自己手寫編碼過濾器

//字元編碼過濾器
@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配置寫一個字元編碼配置類

/**
 * 中文亂碼解決
 */
@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 全域性字元編碼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!