idea控制台从properties中取值然后打印出现控制台乱码问题
在application.properties中写入如下属性:
spring.application.name=springboot-01-demodog.name=旺财
dog.age=3
使用属性绑定的方式:
@ConfigurationProperties(prefix = "dog")
@Component
@Data
public class DogProperties {private String name;private Integer age;}
打印:
@Testvoid test1() {System.out.println(dogProperties);}
打印结果如下:DogProperties(name=旺财, age=3)
即出现中文的乱码
对以上问题
一般都是,也是很多博客都提到的:在设置的文件编码里面都设置UTF-8并勾选自动转换
查询GTP,问题原因是:
当你使用 @ConfigurationProperties 从 application.properties 文件中读取配置时,Spring Boot 会按照特定的编码格式来解析这个文件。如果文件的实际编码和解析时的编码不一致,就会出现中文乱码。在 Windows 系统上,IDEA 默认的属性文件编码通常是 ISO-8859-1,这个编码不支持中文字符。当你输入“旺财”并保存时,IDEA 会将它转换成 ISO-8859-1,但是这个过程是不可逆的,原始的中文信息就丢失了。因此,当程序再次以 UTF-8 或其他编码读取时,就会显示乱码。
而勾选 Transparent native-to-ascii conversion。它会在保存 properties 文件时,自动将非 ASCII 字符(如中文)转换为 \uXXXX 格式的 Unicode 转义序列,从而兼容 ISO-8859-1 编码,同时又能保证中文不乱码。
重点
但是有时候,甚至很多时候,如果只是修改file encoding,未必能解决问题。下面两步可以参考来解决
1.删除properties中原来写的中文内容【删除前先复制下】
2.清理缓存
全部勾上并重启
等重启后,在去properties文件中粘贴原来删掉的中文内容,然后重新运行,这样大概率能解决问题