Springboot使用ResponseBody漢字返回問號問題
使用ResponseBody漢字返回問號
說明
突然有個接口在前臺彈出的中文信息突然變成問號了。
情況
當時排查以為是數據庫的問題,但是在別的表都正常,我再新建的表返回也是問號,問題應該不是數據庫的問題;
后懷疑idea的編碼問題,但是環(huán)境是自動發(fā)布在Linux上,猜測應該不是編碼問題,而且也不好測試;
而在本地環(huán)境測試時發(fā)現,如果返回的是自己的pojo沒有問題(單純的對象,沒有繼承和實現),就感覺很奇怪,直接返回字符串或者使用Gson().toJson()都是問號。
結果
通過查詢發(fā)現是SpringMVC的普遍情況。
使用mvc時,可以通過在xml里配置:
<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
使用springboot時,可以通過實現WebMvcConfigurer:
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8")); converters.add(converter); } }
使用@ResponseBody返回字符串亂碼的解決
在Java配置類文件中加入以下代碼即可解決:
import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.nio.charset.StandardCharsets; import java.util.List; @Configuration public class WebConfig extends WebMvcConfigurationSupport { @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // 解決controller返回字符串中文亂碼問題 for (HttpMessageConverter<?> converter : converters) { if (converter instanceof StringHttpMessageConverter) { ((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8); } } } }
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決java.util.zip.ZipException: Not in GZIP&nbs
這篇文章主要介紹了解決java.util.zip.ZipException: Not in GZIP format報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12詳談java編碼互轉(application/x-www-form-urlencoded)
下面小編就為大家?guī)硪黄斦刯ava編碼互轉(application/x-www-form-urlencoded)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07myeclipse創(chuàng)建servlet_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了myeclipse創(chuàng)建servlet的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07