最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

[nacos]JAR启动并加载/解析Nacos yml格式的配置文件时,报“java.nio.charset.MalformedInputException: Input length = 1 ”

来源:博客园


(资料图片)

1 问题描述

  • 原因1:字符集不匹配

nacos中配置文件的字符集为A,应用程序的读取配置文件时使用了字符集B,导致使用字符集B解码文件二进制流时字符解码失败。一般问题出在中文注释上

  • 原因2:(yml文件)配置格式有误

2 解决思路

2.1 原因1:字符集不匹配时

方法[1] 删除nacos配置文件中的一切中文字符

短频快(临时性解决)

方法[2] 正规解决思路

  • 打JAR包时,在pom.xml指定JAR包内的字符集

pom.xml

UTF-8        UTF-8
  • 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 65001java -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常见维护问题 - 博客园/千千寰宇

关键词: