SpringBoot属性注⼊乱码解决Spring Boot属性注⼊乱码解决
1. 乱码问题
在做springboot属性注⼊时,即在application.properties⽂件中配置如下中⽂:
book.name=三国演义
book.author=罗贯中
book.price=300
待在Book.java中进⾏属性注⼊的时候,
@Component
@ConfigurationProperties(prefix ="book")
public class Book {
private String name;
private String author;
private Integer price;
...
}
会出现乱码问题,输出到页⾯显⽰如下:
Book{name='三国演义', author='ç½—è´¯ä¸', price=300}
2. 原因分析
原因:application.properties默认采⽤ISO-8859-1加载
所以尽管配置了编码格式为UTF-8但是还是会出现注⼊乱码。
3. 乱码解决
1. 查看了⽹上解决乱码的⽅式,⼤部分都是如下:
或者在controller上配置编码格式,但⼤多都是⽆⽤的。
2. 我的解决⽅案:
1. 使⽤⾃定义配置的⽂件
2. 使⽤yml/yaml配置⽂件
3.1 使⽤⾃定义配置的⽂件
使⽤⾃定义的配置⽂件,并在bean中使⽤@PropertySource引⼊⾃定义的配置⽂件。
如:在resources下创建config⽬录,并创建beans.properties⽂件。
book.name=三国演义
book.author=罗贯中
book.price=300
另外在Book.java中使⽤注解引⼊该配置⽂件
@Component
@PropertySource(value ="classpath:config/beans.properties",encoding ="UTF-8")
@ConfigurationProperties(prefix ="book")
public class Book {
private String name;
private String author;
private Integer price;
}
注:
1. @PropertySource(value = “classpath:config/beans.properties”,encoding = “UTF-8”)中的classpth路径要是
beans.properties在resources下的相对路径。
2. @PropertySource引⼊的⽂件名不要使springboot默认的application.properties⽂件。
测试过后,页⾯中⽂正常展⽰。
3.2 使⽤yml/yaml配置⽂件
注:yml/yaml配置⽂件默认的编码为UTF-8。所以对中⽂友好。
book:
name:三国演义
author:罗贯中springboot中文
price:300
⽹页显⽰:
Book{name='三国演义', author='罗贯中', price=300}
4. IDEA中修改项⽬编码
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-qeIcL1jN-1619867743268)
(C:\Users\24016\Desktop\store\spring boot\img\1619867574631.png)]
‘三国演义’, author=‘罗贯中’, price=300}
## 4. IDEA中修改项⽬编码
![在这⾥插⼊图⽚描述](img-blog.csdnimg/20210501191559217.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_1 0,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMjc4MzIw,size_16,color_FFFFFF,t_70#pic_center)