You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从application.yaml中正确获取日文配置值?

如何从application.yaml中正确获取日文配置值?

看起来你遇到了Spring Boot读取YAML文件中日文乱码的棘手问题,我来帮你一步步排查和解决:

1. 先确认YAML文件的实际编码格式

这是最容易被忽略的核心点!很多时候我们默认文件是UTF-8,但实际编辑器保存时用了其他编码(比如Windows下的GBK、Shift-JIS)。

  • 如果你用IDEA/STS这类IDE,看编辑器右下角的编码标识,确保显示的是UTF-8;如果不是,点击编码选择「Convert to UTF-8」后重新保存文件。
  • 用记事本打开文件,选择「另存为」,查看底部的编码选项,确认是UTF-8(注意不要选带BOM的UTF-8,部分解析器对BOM格式不友好)。

2. 移除无效的@PropertySource注解(关键修复!)

你尝试添加的@PropertySource(value = "classpath:application.yaml", encoding = "UTF-8")其实完全不生效——因为@PropertySource默认只支持.properties格式的配置文件,无法解析YAML。这个注解不仅帮不上忙,还可能干扰Spring Boot的自动配置逻辑,建议直接删除它。

Spring Boot会自动加载classpath下的application.yaml,只要你的@ConfigurationProperties配置正确,就能正常绑定配置项,不需要手动指定加载源。

3. 确保JVM启动参数确实生效

你添加的-Dfile.encoding=UTF-8需要确认是否真的被JVM加载。可以在代码里加一行调试代码验证:

System.out.println("当前JVM编码:" + System.getProperty("file.encoding"));

如果输出不是UTF-8,说明启动参数没生效:

  • 在IDEA中,要把参数加到「Run/Debug Configuration」的「VM options」里,而不是「Program arguments」。
  • 如果是Jar包运行,确保命令是java -Dfile.encoding=UTF-8 -jar your-app.jar。

4. 针对Spring Boot旧版本的SnakeYAML配置

Spring Boot底层用SnakeYAML解析YAML文件,在2.2.0版本之前,SnakeYAML默认会使用JVM的系统编码,而不是强制UTF-8。如果你的Spring Boot版本低于2.2.0,可以通过自定义YamlPropertiesFactoryBean来指定编码:

@Configuration
public class YamlEncodingConfig {
    @Bean
    public YamlPropertiesFactoryBean yamlPropertiesFactoryBean() {
        YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean();
        factoryBean.setResources(new ClassPathResource("application.yaml"));
        factoryBean.setEncoding("UTF-8");
        return factoryBean;
    }
}

如果是2.2.0及以上版本,这个配置Spring Boot已经默认处理好了,不需要额外操作。

5. 临时备选方案:Unicode转义写法

如果上面的方法都没解决,可以临时用Unicode转义代替直接写日文,比如:

customer:
  vote:
    people:
      vote-order:
        1:
          id: 3
          name: "\u793E\u9577\u69D8"  # 对应“社長様”
        2:
          id: 4
          name: "\u4F1A\u9577\u69D8"  # 对应“会長様”

不过这只是临时 workaround,还是建议优先解决编码的根源问题。

最后验证

修改完成后重启应用,在代码里输出peoples.get(2).getName(),或者用调试模式查看变量值,确认日文是否正常显示。如果还是有问题,可以检查:

  • 项目编译编码:IDEA中「Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler」确保编码为UTF-8。
  • 控制台编码:IDEA中「Settings -> Editor -> File Encodings」把「Console Encoding」设为UTF-8。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 08:53:16