问题描述
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