Spring Boot项目.properties文件中cedilla软字符无法正常读取问题
Spring Boot多语言法语软音符乱码解决方案
问题根因
Java原生.properties资源文件默认采用ISO-8859-1编码加载,仅支持基础拉丁字符,法语的ç、日语等非基础拉丁字符直接写入未转义时,就会出现编码解析错误,渲染为问号乱码。日语配置自动转Unicode是IDE针对.properties文件做的自动转义处理,符合Java的默认编码规则。
可用解决方案
方案1:手动转Unicode编码(兼容性最优,无需改全局配置)
直接将ç字符替换为对应的Unicode转义序列\u00e7,修改后的配置行为:
getstarted=commen\u00e7ons
该逻辑和日语自动转义的规则完全一致,修改后直接生效,不需要调整其他项目配置,适合临时修复或者改动较小的场景。
方案2:全局修改资源文件编码为UTF-8(适合多语言多字符集维护场景)
如果不想每次手动转义特殊字符,可以统一修改编码配置,支持直接写入原生特殊字符:
- 首先在项目的
application.properties中添加配置,指定消息资源的加载编码为UTF-8:spring.messages.encoding=UTF-8 - 调整IDE的.properties文件默认编码规则:将.properties文件的默认保存编码设置为UTF-8,关闭自动转义ASCII字符的选项,确保所有多语言配置文件都以UTF-8格式保存
- 确认前端HTML页面的渲染编码配置正确,在页面
<head>标签中加入<meta charset="UTF-8">,避免前端二次编码错误
注意:Spring Boot 2.2及以上版本已经默认将spring.messages.encoding设为UTF-8,你只需要确认所有.properties文件本身以UTF-8无BOM格式保存即可,不需要额外加编码配置
内容的提问来源于stack exchange,提问作者Edoardo Fiorini
相关产品推荐
相关产品推荐

