springboot全局字符編碼設(shè)置解決亂碼問題
有時(shí)候我們會(huì)發(fā)現(xiàn)這種問題,明明已經(jīng)設(shè)置了字符編碼過濾器但是還會(huì)有亂碼的情況出現(xiàn),這個(gè)問題令我們很是頭疼,我之前也遇到過這種情況。那怎么解決呢?
springboot編碼格式設(shè)置有三種方式,不管使用哪種方式,總有一款適合你。
1、在application.properties中設(shè)置
#編碼格式 spring.http.encoding.force=true spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true server.tomcat.uri-encoding=UTF-8
如果出現(xiàn)亂碼問題,這種方式解決的可能性不大,但可以嘗試一下,希望還是要有的,萬一解決了呢,因?yàn)椴榭丛创a發(fā)現(xiàn)springboot默認(rèn)的編碼格式就是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配置寫一個(gè)字符編碼配置類
/** * 中文亂碼解決 */ @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是一個(gè)請(qǐng)求和響應(yīng)信息的編碼轉(zhuǎn)換器,通過源碼我們發(fā)現(xiàn)默認(rèn)編碼ISO-8859-1,不是UTF-8,所以我們只要通過上述配置將請(qǐng)求字符串轉(zhuǎn)為UTF-8 即可
WebMvcConfigurerAdapter 是springmvc的一個(gè)配置支配器類,我們可以實(shí)現(xiàn)我們感興趣的方法。
其實(shí)現(xiàn)的接口WebMvcConfigurer 定義了一些回調(diào)方法為springmvc提供一個(gè)通道通過java基本的配置。
到此這篇關(guān)于springboot全局字符編碼設(shè)置解決亂碼問題的文章就介紹到這了,更多相關(guān)springboot 全局字符編碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA 時(shí)間區(qū)間的字符串合法性驗(yàn)證
需要對(duì)獲得的諸如08:30-11:00這樣的字符串進(jìn)行合法性驗(yàn)證,判定表示的時(shí)間區(qū)間是否合法,以及對(duì)高峰期時(shí)間的區(qū)間是否在總的時(shí)間區(qū)間內(nèi)部進(jìn)行判斷。2013-03-03Spring中HandlerMethod類源碼詳細(xì)解析
這篇文章主要介紹了Spring中HandlerMethod類源碼詳細(xì)解析,HandlerMethod類用于封裝控制器方法信息,包含類信息、方法Method對(duì)象、參數(shù)、注解等信息,具體的接口請(qǐng)求是可以根據(jù)封裝的信息調(diào)用具體的方法來執(zhí)行業(yè)務(wù)邏輯,需要的朋友可以參考下2023-11-11Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度
這篇文章主要介紹了Spring整合TimerTask實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12java:找不到符號(hào)報(bào)錯(cuò)的排錯(cuò)方案舉例
當(dāng)你使用一個(gè)未定義或未導(dǎo)入的類時(shí),編譯器會(huì)報(bào)錯(cuò),下面這篇文章主要給大家介紹了關(guān)于java:找不到符號(hào)報(bào)錯(cuò)的排錯(cuò)方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Java實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)好用的MybatisPlus代碼生成器
這篇文章主要介紹了Java實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)好用的MybatisPlus代碼生成器,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04