springboot全局字符編碼設(shè)置解決亂碼問(wèn)題
有時(shí)候我們會(huì)發(fā)現(xiàn)這種問(wèn)題,明明已經(jīng)設(shè)置了字符編碼過(guò)濾器但是還會(huì)有亂碼的情況出現(xiàn),這個(gè)問(wèn)題令我們很是頭疼,我之前也遇到過(guò)這種情況。那怎么解決呢?
springboot編碼格式設(shè)置有三種方式,不管使用哪種方式,總有一款適合你。
1、在application.properties中設(shè)置
#編碼格式spring.http.encoding.force=truespring.http.encoding.charset=UTF-8spring.http.encoding.enabled=trueserver.tomcat.uri-encoding=UTF-8
如果出現(xiàn)亂碼問(wèn)題,這種方式解決的可能性不大,但可以嘗試一下,希望還是要有的,萬(wàn)一解決了呢,因?yàn)椴榭丛创a發(fā)現(xiàn)springboot默認(rèn)的編碼格式就是UTF-8
2、自己手寫(xiě)編碼過(guò)濾器
//字符編碼過(guò)濾器@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() { }}如果這種方式也解決不了問(wèn)題的話,只能使用最后一種方式了。
3、使用java配置寫(xiě)一個(gè)字符編碼配置類
/** * 中文亂碼解決 */@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是一個(gè)請(qǐng)求和響應(yīng)信息的編碼轉(zhuǎn)換器,通過(guò)源碼我們發(fā)現(xiàn)默認(rèn)編碼ISO-8859-1,不是UTF-8,所以我們只要通過(guò)上述配置將請(qǐng)求字符串轉(zhuǎn)為UTF-8 即可
WebMvcConfigurerAdapter 是springmvc的一個(gè)配置支配器類,我們可以實(shí)現(xiàn)我們感興趣的方法。
其實(shí)現(xiàn)的接口WebMvcConfigurer 定義了一些回調(diào)方法為springmvc提供一個(gè)通道通過(guò)java基本的配置。
到此這篇關(guān)于springboot全局字符編碼設(shè)置解決亂碼問(wèn)題的文章就介紹到這了,更多相關(guān)springboot 全局字符編碼內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. IntelliJ IDEA設(shè)置背景圖片的方法步驟2. Java反射技術(shù)原理與用法實(shí)例分析3. python 日志模塊logging的使用場(chǎng)景及示例4. Android根據(jù)包名停止其他應(yīng)用程序的方法5. Java 如何解析key為動(dòng)態(tài)的json操作6. 刪除docker里建立容器的操作方法7. 淺析java并發(fā)中的Synchronized關(guān)鍵詞8. Android運(yùn)行時(shí)權(quán)限終極方案(PermissionX)9. Java httpClient介紹以及使用示例10. Android 使用 SharedPreferences 保存少量數(shù)據(jù)的實(shí)現(xiàn)代碼
