Springboot使用ResponseBody漢字返回問(wèn)號(hào)問(wèn)題
使用ResponseBody漢字返回問(wèn)號(hào)
說(shuō)明
突然有個(gè)接口在前臺(tái)彈出的中文信息突然變成問(wèn)號(hào)了。
情況
當(dāng)時(shí)排查以為是數(shù)據(jù)庫(kù)的問(wèn)題,但是在別的表都正常,我再新建的表返回也是問(wèn)號(hào),問(wèn)題應(yīng)該不是數(shù)據(jù)庫(kù)的問(wèn)題;
后懷疑idea的編碼問(wèn)題,但是環(huán)境是自動(dòng)發(fā)布在Linux上,猜測(cè)應(yīng)該不是編碼問(wèn)題,而且也不好測(cè)試;
而在本地環(huán)境測(cè)試時(shí)發(fā)現(xiàn),如果返回的是自己的pojo沒(méi)有問(wèn)題(單純的對(duì)象,沒(méi)有繼承和實(shí)現(xiàn)),就感覺(jué)很奇怪,直接返回字符串或者使用Gson().toJson()都是問(wèn)號(hào)。
結(jié)果
通過(guò)查詢發(fā)現(xiàn)是SpringMVC的普遍情況。
使用mvc時(shí),可以通過(guò)在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時(shí),可以通過(guò)實(shí)現(xiàn)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返回字符串中文亂碼問(wèn)題 for (HttpMessageConverter<?> converter : converters) { if (converter instanceof StringHttpMessageConverter) { ((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8); } } } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 方法泛型入?yún)和String的重載關(guān)系詳解
這篇文章主要介紹了java 方法泛型入?yún)和String的重載關(guān)系詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02解決java.util.zip.ZipException: Not in GZIP&nbs
這篇文章主要介紹了解決java.util.zip.ZipException: Not in GZIP format報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12詳談java編碼互轉(zhuǎn)(application/x-www-form-urlencoded)
下面小編就為大家?guī)?lái)一篇詳談java編碼互轉(zhuǎn)(application/x-www-form-urlencoded)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07idea打包java可執(zhí)行jar包的實(shí)現(xiàn)步驟
這篇文章主要介紹了idea打包java可執(zhí)行jar包的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Java實(shí)現(xiàn)簡(jiǎn)易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲(附源碼)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)簡(jiǎn)易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04myeclipse創(chuàng)建servlet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了myeclipse創(chuàng)建servlet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07