org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

问题描述:

1.在application.yml文件里的注释乱码
2.idea编辑器提示这个文件被错误的编码UTF-8加载,并提示重新使用GBK加载等等
3.项目启动报错:java.nio.charset.MalformedInputException

问题原因:

application文件编码问题,就是在UTF-8和GBK这两种编码格式之间存在的问题,或者是文件中存在错误空格

解决办法:

1.复制application.yml文件里的内容,注意只复制内容而不是复制文件,然后删除原本的application.yml,然后新建一个application.yml,将复制的内容粘贴上去
2.由于application.yml文件里的配置代码都是英文的,所以编码的问题一般是对于该文件中的中文注释来说的,所以删除掉所有的注释即可

### IDEA 中 `org.yaml.snakeyaml.error.YAMLException` 和 `java.nio.charset.MalformedInputException: Input length = 1` 的解决方案 当在 IntelliJ IDEA 中运行项目时,如果遇到 `org.yaml.snakeyaml.error.YAMLException` 或者 `java.nio.charset.MalformedInputException: Input length = 1` 错误,通常是因为 YAML 文件编码不匹配或者存在非法字符引起的。 以下是详细的分析和解决方案: #### 原因分析 该问题的根本原因是 YAML 配置文件中可能存在非 UTF-8 编码的内容,尤其是中文或其他特殊字符。YAML 解析器默认期望输入为 UTF-8 格式,但如果文件的实际编码与解析器预期不符,则会抛出此类异常[^1]。 此外,在某些情况下,即使文件本身是 UTF-8 编码,但由于 JVM 默认编码设置不同(例如系统级编码为 GBK),也可能导致类似的错误[^2]。 --- #### 解决方法 ##### 方法一:调整运行参数以指定编码方式 可以通过修改项目的启动命令来强制指定文件编码为 UTF-8。具体操作如下: ```bash java -Dfile.encoding=UTF-8 -jar your-application.jar ``` 对于 IDE 启动配置,可以在 **Run/Debug Configurations** 中添加 `-Dfile.encoding=UTF-8` 参数到 VM options 字段中。这样可以确保 Java 运行环境始终使用 UTF-8 来读取文件内容。 ##### 方法二:移除或转换 YAML 文件中的敏感字符 如果确认问题是由于 YAML 文件内的特定字符引起(比如中文注释),可以选择以下两种处理方式之一: 1. 删除所有可能导致冲突的非 ASCII 注释; 2. 使用工具将整个 YAML 文件保存为纯 UTF-8 编码格式,并重新加载至工程中测试效果[^1]。 注意:部分编辑器可能不会自动识别并应用正确的编码标准,因此建议手动验证文件头信息以及实际存储形式是否一致。 ##### 方法三:安装依赖后再尝试重启服务 有时即便完成了上述更改仍无法解决问题,这可能是由于本地缓存未及时更新所致。此时可考虑执行 Maven/Gradle 的 clean & install 流程清理旧版本资源再部署新构建产物进行调试[^2]: ```bash mvn clean install # or gradle clean build ``` --- ### 总结 通过适当调整虚拟机选项、修正源数据集结构或是刷新工作区状态均能有效缓解甚至彻底消除这类由字符集差异引发的技术难题。最终目标是要让应用程序能够稳定地按照预设逻辑正常运转起来而不再受到外部干扰因素的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值