IntelliJ IDEA提交properties文件至GitLab出现Unicode转义异常
问题产生原因
- Java原生
.properties资源文件的官方规范默认采用ISO-8859-1编码,所有非ASCII字符都需要转义为\uXXXX格式的Unicode转义序列存储,你看到的俄文字符被替换为\u0422\u0438\u043f这类内容,就是触发了这个标准转义逻辑。 - IntelliJ IDEA默认开启属性文件透明Native-to-ASCII转义功能:本地打开文件时会自动把磁盘上存储的Unicode转义序列渲染成人类可读的原生字符,所以你本地编辑、查看时完全正常,看不到转义格式。但实际写入磁盘的文件内容已经被自动转成了Unicode转义形式,哪怕是你没有手动修改的原有行,只要触发了文件保存时的统一编码转换逻辑,就会被一并转义后写入。
- 从你提供的编码设置截图来看,仅配置了全局、项目级别的UTF-8编码,没有调整properties文件的专属编码和转义规则,所以提交推送到GitLab的就是磁盘上实际存储的转义后内容;GitLab网页端没有IDEA的自动转义渲染能力,就会直接显示出原始的转义序列。
修复方案
可根据项目实际情况三选一:
- 方案1:保留标准转义逻辑(兼容性最优,符合Java官方规范)
不需要修改文件实际存储内容,只要确认项目所有开发成员的IDEA都开启了透明Native-to-ASCII转义功能即可,本地编辑、程序运行读取配置都不会出现异常。GitLab上显示转义序列只是缺少本地IDE的渲染能力,完全不影响配置的实际生效。 - 方案2:关闭自动转义,让properties文件直接存储UTF-8原生字符
打开IDEA设置 → 编辑器 → 文件编码,找到「属性文件的默认编码」选项,下拉选择为UTF-8,同时取消勾选透明native-to-ascii转换,之后将已经被转义的文件内容还原为原生可读字符,重新提交推送即可。注意:该方案要求项目运行环境使用Java 9及以上版本,Java 9开始才正式支持properties文件默认以UTF-8编码读取,低版本运行时会出现乱码问题。
- 方案3:更换配置文件格式
如果是Spring Boot等支持多配置格式的项目,可以将properties配置文件替换为.yml/.yaml格式,这类配置文件默认采用UTF-8编码存储,不会触发自动Unicode转义逻辑。
内容的提问来源于stack exchange,提问作者NeverSleeps
相关产品推荐
相关产品推荐

