1 问题描述
- 原因1:字符集不匹配
nacos中配置文件的字符集为A,应用程序的读取配置文件时使用了字符集B,导致使用字符集B解码文件二进制流时字符解码失败。
一般问题出在中文注释上
- 原因2:(yml文件)配置格式有误
2 解决思路
2.1 原因1:字符集不匹配时
方法[1] 删除nacos配置文件中的一切中文字符
短频快(临时性解决)
方法[2] 正规解决思路
- 打JAR包时,在
pom.xml
指定JAR包内的字符集
pom.xml
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.outputEncoding>UTF-8</project.build.outputEncoding>
- jar包启动时,全局指定文件编码类型
以解决:设置
springboot/tomca
加载nacos
配置中心的配置文件时报java.nio.charset.MalformedInputException: Input length = 1
的问题
java -Dfile.encoding=utf-8 -jar app.jar
java -javaagent:./skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=application-local-test -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.trace.ignore_path=GET:/actuator/health,Lettuce/**,/eureka/**,HttpAsyncClient/local,Mysql/**,Druid/** -Dfile.encoding=utf-8 -jar app.jar
方法3 (通过
IDEA
默认方式在本地启动程序时)
Settings
-Editor
-File Encodings
-*
3 延伸相关问题
Q1:Windows中启动JAR包程序的控制台窗口中文乱码显示
- 问题描述
JAR
启动命令中指定了字符集编码: -Dfile.encoding=utf-8
- 解决思路
[方法1] 从控制台窗口入手:设置控制台窗口的字符集为
UTF-8
chcp 65001
java -javaagent:./skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=application-local-test -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.trace.ignore_path=GET:/actuator/health,Lettuce/**,/eureka/**,HttpAsyncClient/local,Mysql/**,Druid/** -Dfile.encoding=utf-8 -jar app.jar
X 参考文献
- Nacos 解析yml文件出错 java.nio.charset.MalformedInputException: Input length = 1 - CSDN
- Java YAMLException: java.nio.charset.MalformedInputException: Input length=1(IDEA)问题解决 - CSDN
- [Windows]CMD命令入门教程 与 Windows常见维护问题 - 博客园/千千寰宇