@Value读取properties中文乱码解决方案

Posted 爱叨叨的程序狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Value读取properties中文乱码解决方案相关的知识,希望对你有一定的参考价值。

当我们在项目中需要读取配置文件的变量时,往往会遇到读取中文乱码的问题:

英文字符则不会出现该问题。

出现该问题的原因是:

SpringBoot在加载配置文件时,使用的默认编码是:ISO_8859_1。

详细原因请参考:

https://eericzeng.github.io/2019/06/29/SpringBoot%E4%BD%BF%E7%94%A8@Value%E8%AF%BB%E5%8F%96.properties%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/

那么我们修改IDEA的编码格式为UTF-8不就可以了吗?

这种方式似乎解决了该问题,但是又没完全解决,依然会出现乱码的问题。

那么首先我们需要遵循的原则是:在配置文件中尽量避免中文配置,

当我们不得不配置中文数据时,可以使用如下解决方案:

读取properties中的中文配置,可以使用@PropertySource注解。

下面是demo:

首先新建配置文件:xxx.properties,名称不能和application.properties相同。

新建一个了类,用来接收配置:

@Data
@Component
@PropertySource(value = "classpath:chinese.properties", encoding="UTF-8")
//指定读取配置的前缀
@ConfigurationProperties(prefix = "com.example.demo")
public class Properties 
    private String name;
    private Integer age;
    private String address;

使用:

@Autowired引用

这样就可以正确加载中文配置。

@ConfigurationProperties还可以加载yml配置,同样不会出现乱码问题。

如何获取yml里的配置数据?

以上是关于@Value读取properties中文乱码解决方案的主要内容,如果未能解决你的问题,请参考以下文章

spring使用@Value注解读取.properties文件时出现中文乱码问题的解决

springBoot使用@Value标签读取*.properties文件的中文乱码问题

读取properties中文乱码解决

Spring Boot @Value注解中文配置乱码

Java读取properties文件工具类并解决控制台中文乱码

boost.property_tree读取中文乱码问题正确的解决方式