springboot学习一 idea配置文件乱码

采用IDEA进行springboot开发时,在application.properties配置的中文乱码

配置文件如下:

server.port=8080
server.servlet.context-path=/shiro
spring.application.name=shiro

spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

user.user-name=张三

对应绑定的配置类:

@Component
@ConfigurationProperties(prefix = "user")
@Data
public class User {
    private String userName;
}

运行结果:

User(userName=å¼ ä¸‰)

.properties文件的编码方式以及IDEA的编码方式如下图:

这些配置完之后还是乱码

猜测应该是把流输入进来,但是没有按照UTF8编码进行解析,采取了别的解析方式。采用原始的读配置文件方式读配置文件,并采取utf8进行解析,代码如下:

InputStream inputStream = UserController.class.getClassLoader().getResourceAsStream("application.properties");



        Properties utf8Properties=new Properties();
        try {
            utf8Properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
            String property = utf8Properties.getProperty("user.user-name");
            log.info("{}",property);

        } catch (IOException e) {
            e.printStackTrace();
        }

运行结果:

2021-09-12 16:34:14.776  INFO 12028 --- [nio-8080-exec-2] c.t.s.controller.UserController          : 张三

说明上述猜测是对的,那么只要配置好springboot的编码方式就可以解决上述问题:

server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

运行结果

INFO 27248 --- [nio-8080-exec-1] c.t.s.controller.UserController: User(userName=张三)
INFO 27248 --- [nio-8080-exec-1] c.t.s.controller.UserController: 张三
原文地址:https://www.cnblogs.com/cplinux/p/15259182.html