關於spring boot屬性文件中文參數文輸出到頁面亂碼

 


         在eclipse中,以.properties後綴的屬性文件默認是ISO-8859-1,即字節編碼,這種編碼方式向下兼容ASCII,而Unicode編碼與ISO-8859-1標準兼容,UTF-8則是對Unicode進行了編碼,是其一種實現方式。UTF-8(8-bit Unicode Transformation Format),是一種變長的編碼方式,它以8位爲碼元,用1-6個碼元對Unicode進行編碼,對英文字符使用單字節編碼,對中文編碼用到三個字節來編碼。

         所以在默認編碼格式爲ISO-8859-1的屬性文件中直接輸入中文顯示的並不是中文,而是這個中文的ASCII碼,當然也可以在preferencds>content types>Text中修改爲UTF-8,這樣在屬性文件中輸入的中文會直接接顯示中文,而不是ASCII碼了,但是在程序中讀取的中文是亂碼,猜測應該是spring boot中屬性文件默認的編碼格式是ISO-8859-1,所以在讀取裏面的參數時也是以這個格式讀取,因爲你已經把屬性文件的編碼格式改成了UTF-8,所以springboot在注入屬性參數的時候以ISO-8859-1的編碼格式讀取編碼格式爲UTF-8的內容就會亂碼。

         最後,我把屬性文件的編碼格式改成了默認的ISO-8859-1,輸入中文顯示的是ASCII碼,然後再輸出到瀏覽器頁面上就顯示正常了,瀏覽器採用的是自動編碼,結果更驗證了之前的猜測應該是正確的。爲什麼說是應該,因爲我沒有去查看源碼,所以還不能下最終判斷。

@RestController

@ConfigurationProperties(prefix ="my")

public class TestController {

   private List<String>gaox=new ArrayList<String>();

   private Loggerlog=Logger.getLogger(TestController.class);

 

   public List<String> getGaox() {

      return gaox;

   }

 

   public void setGaox(List<String> gaox) {

      this.gaox =gaox;

   }

   @RequestMapping("/gaox")

   public List<String> gaox(){

      for(Stringg:gaox){

        System.out.println(g);

        log.info(g);

      }

      return gaox;

   }

}

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章