在使用spring的@PropertySource时,发现引入的配置出现了乱码,看到有人抠源码改写,想说一下,可以通过配置
@PropertySource(value = "classpath:/config.properties", encoding = "utf-8")
来解决,不过对于application.properties来说不生效,应该是已经在环境中了,没有再加载,其实也不用再重复加载。
另一种方案是通过勾选transparent native-to-ascii conversion配置来解决。

关于这个要不要勾选,先总结一句话:团队开发统一标准,个人开发保持习惯。
官方解释如下:
点击查看官网解释.

简单来讲,java默认采用iso8859-1编码读取,勾选这个后,实际存储变为ASCII码字符,这样是能正常解析的;
实际效果
test.name=\u54C8\u54C8
test.number=456
显示效果
test.name=哈哈
test.number=456
这其实只是编辑器的优化而已,并非本来面目,用sublime等文本编辑器打开就能看到实际效果。
再来说properties本身的编码:
- 如果用
iso8859-1,文本编辑器打开后中文字符乱码,读取也是乱码(这是显然的,认不出来); - 如果是
utf-8编码,文本编辑器打开后中文字符显示正常,读取还是乱码,上面讲到了,底层读取的编码为iso8859-1。
撇开文本编码,存储成ASCII字符是正常的,java也会识别\uxxxx,这也是建议勾选的原因。
对比下eclipse(oxygen):创建properties(默认iso8859-1)后,编辑中文时也是自动转成了\uxxxx,用utf-8编码时,不会做自动转换。
具体方案:
- 勾选时:正常使用,IDE等提供预览支持;
- 未设置:保证读取编码正确。

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
本文探讨了在Spring框架中使用@PropertySource注解时遇到的配置文件乱码问题,提供了两种有效解决方案:一是通过指定encoding参数为utf-8;二是勾选transparentnative-to-ascii-conversion配置,适用于团队和个人开发场景。
1058

被折叠的 条评论
为什么被折叠?



