SpringBoot更改HttpMessageConverters使用FastJson出現亂碼問題


1、出現問題的現象!如下截圖,使用SpringBoot 進行開發,接口返回的內容出現中文亂碼?

接口內容想要返回的內容:

 

頁面返回內容:

驚喜不?意外不?

為什么出現這個情況?不例外的話,很多同事都是替換了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); } }

 

 

 

2、解決問題唄!

我們從上面的代碼可以看出,在進行數據轉換的時候,直接食用FastJson進行替換了原本的默認轉換工具。那既然出現問題,一定是新的轉換工具出現了問題!

那我們在設定轉換過程,是不是可以設定具體轉換之后的數據類型及編碼格式呢?答案是肯定的!

 @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); }

 

這樣就解決了亂碼問題了!

3、為什么這么修改呢?

如果你看到結果之后,想知道為啥這么修改的話,debug!

初始化的時候,我們看到

SupportedMediaTypes值為 */* 這樣對於很多瀏覽器是識別不了具體的格式和編碼類型的,所以出現亂碼和非格式化的樣子!

 

 

 

(2)指定格式個編碼類型之后,出現了JSON格式和UTF-8編碼格式,其實對應枚舉對象就是

 

/**
* Public constant media type for {@code application/json;charset=UTF-8}.
*/
public final static MediaType APPLICATION_JSON_UTF8;

 

 

 

  小白看問題,淺顯不深究

如若表達不清晰或存疑,可留言指教!

      感謝來過

  放松一下啦,找找下圖幾個方臉吧!

————————————————————————————————————————————————

      (^ _ ^)  (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)

       (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)[^ _ ^](^ _ ^)

        (^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)(^ _ ^)

          (^ _ ^)[^ _ ^](^ _ ^)(^ _ ^)

            (^ _ ^)(^ _ ^)(^ _ ^)

              (^ _ ^)[^ _ ^]

                  (^ _ ^)

————————————————————————————————————————————————

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM