背景
今天准备继续写自己的练手项目,但是启动项目时失败了,控制台消息显示:
java.nio.charset.MalformedInputException: Input length = 1
问题描述
打开Spring boot项目后,查看了一遍各个模块,发现日志配置文件Logback.xml
文件中的中文注释变成了乱码,这个原因看起来很明显,是因为IDEA的字符集不正确,所以显示失败了。IDEA在这个xml文件上提供了一个简单的解决方式: 将Logback.xml
文件的字符集转为GBK
。点击change之后,乱码消失了。点击启动项目,但失败了。通过阅读控制台的信息,关注到这样一行信息:
22:06:51.554 [main] ERROR org.springframework.boot.SpringApplication - Application run failed org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
原因分析:
通过度娘可以很容易知道,这个错误信息提示在尝试使用特定字符编码读取数据时出现了问题。它通常意味着可能存在某个字符无法用给定的字符编码正确解析的情况。联想到刚才通过IDEA对Logback.xml
文件的操作,问题就出现在字符编码上。
解决方案:
最简单的解决方式是:更换字符编码
如果你清楚知道你的项目使用的编码,那么直接按照下图的方式设置;如果不清楚的话,可以选择可能的编码,修改后测试能否执行。
在IDEA中应如下设置(英文路径应为 [File -> Settings --> Editor -> FileEncodings]):