IDEA SpringBoot使用@Value读取application.properties文件中文乱码

背景:
JDK         11
IDEA        2021.3
SpringBoot  2.5.6

重现问题

解决方案

1)使用application.yml来保存你的配置,效果和application.properties一样,配置更直观(推荐)

2)使用@PropertySource(value=“classpath:xxx.properties”, encoding=“UTF-8”)注解,自定义配置文件,相信大家想要的肯定不是这种

3)打开IDEA设置,将这里的编码选择为UTF-8并且勾选Transparent native-to-ascii conversion,这里是*.properties文件使用UTF-8格式,存储中文使用ASCII码,你在IDEA中看中文是正常的,使用文本工具打开中文是一串ASCII码

 小结:设置编码是解决不了问题的,开发中尽量还是不要在配置文件中使用中文

问题分析

  • *.properties默认使用ISO-8859-1编码加载
  • *.yml/*.yaml默认使用UTF-8编码加载

一路跟踪到Springboot加载配置文件的地方org.springframework.boot.context.config.ConfigFileApplicationListener.Loader#loadDocuments,这个类从从Springboot2.4.0开始不推荐使用,直到Springboot2.6.0废弃,不扯远了,该类方法源码是这样的

private List<Document> loadDocuments(PropertySourceLoader loader, String name, Resource resource)
				throws IOException {
			DocumentsCacheKey cacheKey = new DocumentsCacheKey(loader, resource);
			List<Document> documents = this.loadDocumentsCache.get(cacheKey);
			if (documents == null) {
				List<PropertySource<?>> loaded = loader.load(name, resource);
				documents = asDocuments(loaded);
				this.loadDocumentsCache.put(cacheKey, documents);
			}
			return documents;
		}

很显然,关键点就在loader.load(name, resource)这里,他有两个实现类

(1)org.springframework.boot.env.Properti

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 如果在application.properties文件中的注释出现乱码,可以尝试以下解决方法。首先,在application.properties文件中添加如下内容来配置中文编码格式: ``` #配置中文编码格式 server.tomcat.uri-encoding=UTF-8 server.servlet.encoding.force=true server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true ``` 其次,可以在spring boot项目的启动类或者需要的类上加上下面的注解来指定中文编码格式: ``` @PropertySource(value = { "classpath:business.properties" }, encoding = "UTF-8") ``` 最后,保存并退出IDEA,重新启动后再次查看application.properties文件,应该可以正常显示中文注释了。\[1\]\[2\] #### 引用[.reference_title] - *1* [解决springboot 配置文件application.properties 中文乱码问题](https://blog.csdn.net/junR_980218/article/details/124585310)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何处理从application.properties配置文件获取的汉字乱码问题](https://blog.csdn.net/u013232219/article/details/122270606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Long丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值