springboot全局字符編碼設置解決亂碼問題
有時候我們會發現這種問題,明明已經設置了字符編碼過濾器但是還會有亂碼的情況出現,這個問題令我們很是頭疼,我之前也遇到過這種情況。那怎么解決呢?
springboot編碼格式設置有三種方式,不管使用哪種方式,總有一款適合你。
1、在application.properties中設置
#編碼格式spring.http.encoding.force=truespring.http.encoding.charset=UTF-8spring.http.encoding.enabled=trueserver.tomcat.uri-encoding=UTF-8
如果出現亂碼問題,這種方式解決的可能性不大,但可以嘗試一下,希望還是要有的,萬一解決了呢,因為查看源碼發現springboot默認的編碼格式就是UTF-8
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配置寫一個字符編碼配置類
/** * 中文亂碼解決 */@Configurationpublic 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 即可
WebMvcConfigurerAdapter 是springmvc的一個配置支配器類,我們可以實現我們感興趣的方法。
其實現的接口WebMvcConfigurer 定義了一些回調方法為springmvc提供一個通道通過java基本的配置。
到此這篇關于springboot全局字符編碼設置解決亂碼問題的文章就介紹到這了,更多相關springboot 全局字符編碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
1. 解析原生JS getComputedStyle2. Idea 2019.3 本應該搜索到的插件卻搜索不到的解決方法3. SpringBoot+SpringCache實現兩級緩存(Redis+Caffeine)4. IntelliJ IDEA安裝插件的方法步驟5. 在JSP中使用formatNumber控制要顯示的小數位數方法6. ASP.NET MVC視圖頁使用jQuery傳遞異步數據的幾種方式詳解7. ASP.NET泛型三之使用協變和逆變實現類型轉換8. IntelliJ IDEA導入jar包的方法9. 每日六道java新手入門面試題,通往自由的道路10. 每日六道java新手入門面試題,通往自由的道路--多線程
