問題描述
springcloud微服務,在idea中運行代碼,能夠正常拉去nacos上的配置文件,打包后,通過jar包啟動 java -jar xxx.jar,出現錯誤:java.nio.charset.MalformedlnputException: Input length = 1
問題原因
由于配置內容編碼不一致,導致項目在啟動過程中出現讀取失敗問題。具體原因在于:配置文件中包含中文內容,而 Nacos 在讀取配置時默認使用 UTF-8 編碼進行解析;當通過 Windows 的 CMD 命令行啟動項目時,系統默認采用的是 GBK 編碼。編碼方式的不一致使得部分中文字符無法被正確識別,從而引發配置加載異常。
解決方法
在啟動jar包時,啟動指令中增加指定編碼格式:-Dfile.encoding=utf-8
java -jar -Dfile.encoding=utf-8 XXX.jar