1. 程式人生 > 其它 >(已解決)SpringBoot 讀取yml/yaml/properties配置檔案時,使用註解 @Value 獲取到中文亂碼問題

(已解決)SpringBoot 讀取yml/yaml/properties配置檔案時,使用註解 @Value 獲取到中文亂碼問題

技術標籤:spring註解@Value()配置檔案屬性值識別為中文亂碼

問題現象:

今天在專案中需要根據資料庫的某個中文值,檢索對應表中的指定欄位,從而獲取該行記錄的相關資訊.,由於不確定該中文值是否不變,為了提高程式碼效率,我把該中文值通過配置檔案定義獲取:

而不是在程式碼中寫死,然後用@Vaule註解去獲取這個屬性值:

結果除錯程式碼的時候發現是亂碼:


問題分析:

通過查閱相關資料發現Sprigboot 底層邏輯中,使用@Vaule註解去獲取配置檔案的資料值時,是採用ISO-8859-1編碼格式,因此無法順利識別中文;

網上有些我不太建議的方法,例如:

1.可以通過新增springboot配置

2.設定 File Encodings的Transparent native-to-ascii conversion為true;

這裡我介紹一種快準狠的方法,可以獲取到中文值:

在需要使用到該中文值的時候,對該變數值進行編碼格式轉碼,轉化為UTF-8,即可識別中文了.


解決方法:

修改 mediumVoltageCircuitTableName 變數的編碼格式為UTF-8:

		String devSpecificationName = new String(mediumVoltageCircuitTableName.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

除錯結果: