一、出現問題的現象!以下截圖,使用SpringBoot 進行開發,接口返回的內容出現中文亂碼?spring
接口內容想要返回的內容:json
頁面返回內容:瀏覽器
驚喜不?意外不?app
爲何出現這個狀況?不例外的話,不少同事都是替換了SpringBoot自帶的Json框架爲FastJson解析工具了。框架
在替換的過程當中,沒有注意編碼格式形成的!工具
@SpringBootApplication(scanBasePackages = {"com.spring.resource.cloud*"}) @ServletComponentScan({"com.spring.resource.cloud*"}) public class ResourceUploadGuestApplication { public static void main(String[] args) { SpringApplication.run(ResourceUploadGuestApplication.class, args); } @Bean public HttpMessageConverters fastJsonHttpMessageConverters(){ //建立FastJson信息轉換對象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); //建立Fastjosn對象並設定序列化規則
FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//規則賦予轉換對象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return new HttpMessageConverters(fastJsonHttpMessageConverter); } }
二、解決問題唄!編碼
咱們從上面的代碼能夠看出,在進行數據轉換的時候,直接食用FastJson進行替換了本來的默認轉換工具。那既然出現問題,必定是新的轉換工具出現了問題!spa
那咱們在設定轉換過程,是否是能夠設定具體轉換以後的數據類型及編碼格式呢?答案是確定的!debug
@Bean public HttpMessageConverters fastJsonHttpMessageConverters(){ //建立FastJson信息轉換對象
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); //建立Fastjosn對象並設定序列化規則
FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 中文亂碼解決方案
List<MediaType> mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//設定json格式且編碼爲UTF-8 fastJsonHttpMessageConverter.setSupportedMediaTypes(mediaTypes); //規則賦予轉換對象
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); return new HttpMessageConverters(fastJsonHttpMessageConverter); }
這樣就解決了亂碼問題了!code
三、爲何這麼修改呢?
若是你看到結果以後,想知道爲啥這麼修改的話,debug!
初始化的時候,咱們看到
SupportedMediaTypes值爲 */* 這樣對於不少瀏覽器是識別不了具體的格式和編碼類型的,因此出現亂碼和非格式化的樣子!
(2)指定格式個編碼類型以後,出現了JSON格式和UTF-8編碼格式,其實對應枚舉對象就是
/**
* Public constant media type for {@code application/json;charset=UTF-8}.
*/
public final static MediaType APPLICATION_JSON_UTF8;
小白看問題,淺顯不深究
如若表達不清晰或存疑,可留言指教!
感謝來過
放鬆一下啦,找找下圖幾個方臉吧!
————————————————————————————————————————————————
(^ _ ^) (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)
(^ _ ^)(^ _ ^)(^ _ ^)
(^ _ ^)[^ _ ^]
(^ _ ^)
————————————————————————————————————————————————