SpringCloud 解决org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Inpu

SpringCloud启动的,从nacos读取配置文件,出现错误

nacos 读取配置文件 org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1

这个异常信息表明在读取 YAML 文件时出现了编码问题,具体来说是输入的数据不正确导致了 MalformedInputException 异常。通常这种错误是因为文件的编码格式与程序期望的编码格式不匹配所引起的。

解决方案:

1)把nacos里面的中文注释去掉

2)启动的时候,命令行加上参数file encoding, 执行java -jar xx.jar命令时加上-Dfile.encoding=utf-8属性,即执行java -jar -Dfile.encoding=utf-8 xx.jar

3) 如果是在intellj上,把所有的文件设置为utf-8

设置后,直接重启就好了

### Spring Cloud解决 `YAMLException` 和 `MalformedInputException` 当在 Spring Cloud 项目中遇到 `org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1` 错误时,这通常意味着配置文件存在字符编码问题或文件损坏。以下是详细的解决方案: #### 文件编码设置 确保所有的 `.yml` 或者 `.properties` 文件都使用 UTF-8 编码保存。IDEA 可以通过以下方式调整默认编码格式[^1]。 对于已经存在的文件,在编辑器内手动转换其编码至 UTF-8 并重新保存可以解决问题。如果是在 Windows 下开发,特别需要注意本地系统的默认 ANSI 编码可能带来的影响。 #### Nacos 配置中心特定处理 针对 Nacos 的情况,确认上传到 Nacos Server 上的配置项也是基于正确的字符集创建并传输给客户端应用实例。可以通过修改 Nacos 客户端连接参数来指定期望使用的字符集,例如添加 JVM 参数 `-Dfile.encoding=UTF-8` 来强制设定整个应用程序环境下的字符串表示形式遵循统一标准[^2]。 另外,检查 Nacos 控制台中的数据源配置部分是否有任何关于编码选项可选;如果有,请将其设为 UTF-8。 #### Maven 构建过程优化 构建过程中也可能引入不兼容的字节序列进入最终产物之中。因此建议审查 POM 文件内的资源过滤规则以及插件配置,防止不必要的替换操作破坏原始文本结构。特别是 `<build>` 节点下有关于如何对待非 ASCII 字符串的部分应该仔细校验[^3]。 ```xml <project> ... <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <!-- 明确指明编码 --> <encoding>UTF-8</encoding> </resource> </resources> ... </build> ... </project> ``` #### 运行时环境变量控制 最后但同样重要的是,在启动 Java 应用程序之前,可通过设置环境变量或者命令行参数的方式显式声明所希望的工作区编码模式。比如直接在执行 jar 包前加上如下指令: ```bash export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8" java -jar your-application.jar ``` 这样做能够有效避免由于操作系统层面的因素而导致的一系列潜在乱码现象发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值