返回

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

后端

大家好,今天我们来聊聊如何解决使用@Value读取Properties配置文件时中文乱码的问题。

乱码产生的原因

当我们使用@Value读取配置文件时,SpringBoot默认使用ISO_8859_1编码进行读取,而中文编码为UTF-8,这就会导致中文乱码。

解决方案

要解决这个问题,有几种方法:

  1. 在application.properties文件中设置文件编码

在application.properties文件中添加一行:

spring.jackson.default-property-encoding=UTF-8
  1. 在@Value注解中设置编码

@Value注解中设置encoding属性,例如:

@Value("${key}")
private String key = "";
  1. 使用@PropertySource注解

使用@PropertySource注解指定配置文件的编码,例如:

@PropertySource(value = "classpath:application.properties", encoding = "UTF-8")
public class MyConfig {
  // ...
}

注意事项

  • 如果在配置文件中使用了中文,建议使用UTF-8编码。
  • 如果使用IntelliJ IDEA等开发工具,可以在配置文件的右下角选择编码方式。
  • 如果使用了外部配置文件,需要确保配置文件的编码与项目编码一致。

示例代码

@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

@Configuration
public class MyConfig {
  @Value("${key}")
  private String key;

  @PostConstruct
  public void init() {
    System.out.println("key = " + key);
  }
}

配置application.properties文件

key=中文

运行结果

key = 中文

结语

通过以上方法,我们可以轻松解决@Value读取Properties配置文件中文乱码的问题。希望本文对大家有所帮助。