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;
...geter/seter....
}
会出现乱码问题,输出到页面显示如下:
Book{name='三国演义', author='ç½—è´¯ä¸', price=300}
2. 原因分析
原因:application.properties默认采用ISO-8859-1加载
所以尽管配置了编码格式为UTF-8但是还是会出现注入乱码。
3. 乱码解决
查看了网上解决乱码的方式,大部分都是如下:
server.tomcat.uri-encoding=UTF-8或者在controller上配置编码格式,但大多都是无用的。
我的解决方案:
- 使用自定义配置的文件
- 使用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;
}
注:
- @PropertySource(value = “classpath:config/beans.properties”,encoding = “UTF-8”)中的classpth路径要是beans.properties在resources下的相对路径。
- @PropertySource引入的文件名不要使springboot默认的application.properties文件。
测试过后,页面中文正常展示。
3.2 使用yml/yaml配置文件
注:yml/yaml配置文件默认的编码为UTF-8。所以对中文友好。
book:
name: 三国演义
author: 罗贯中
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中修改项目编码

版权声明:本文为qq_42278320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。