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进行解析,代码如下:
public static void main(){
    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: 张三

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号