YAMLException异常产生原因及解决方案

YAMLException异常产生原因及解决方案

01 异常发生场景

  • 当我在使用一个插件优化swagger文档时
  • 突然yml的中文全变成了乱码,在idea里的文件也从绿色图标变成了红色,我看到yml文件上方有一个设置文件编码的选项,我就随意的设置为了GBK,图标变回绿色图标,注释中的乱码也变回中文,我也没太在意,毕竟代码跑着跑着就是会出莫名其妙的问题
  • 以下是yml文件的代码
server:
  port: 8080
  servlet:
    context-path: /web

# 配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/text012?userSSL=false;serverTimezone=Asia/Shanghai
    username: root
    password: 1234
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

# 配置mybatis
mybatis:
  # mapper配置文件
  mapper-locations: classpath:mapper/*.xml
  # resultType别名,没有这个配置resultType包名要写全,配置后只要写类名
  type-aliases-package: com.example.demo.com.mashang.dao
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  • 但是当我启动时,它报了一个YAMLException异常,程序直接终止了

02 异常的产生原因

  • 我第一反应就是swagger的优化插件knife4j有问题,于是把它删掉再测试了一遍,很可惜还是寄了,代码还是报YAMLException异常,程序依旧终止

  • 所以问题还是出在yml文件的编码问题

  • 这个YAMLException异常算是个比较奇怪的问题了,明明没做什么,yml的编码就莫名其妙改了

03 解决方式

  • 设置项目的默认编码,步骤如下

1.在左上角的file中选择setting

2.在搜索框中搜索File encodings

4.把Global encoding和Project encoding设置为UTF-8

  • 全局编码和项目编码一般使用的都是utf-8

5.default encoding for properties files设置为UTF-8

6.transparent native-to-ascii conversion打钩

7.在create utf-8 file选项中选with no bom

  • utf-8编码默认是不需要bom的

你可能感兴趣的:(bug,java,spring,boot)