You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot messages_fr.properties法语特殊字符乱码,配置UTF-8无效如何解决?

解决方案

1. 确认properties源文件编码

首先确保你本地的messages_fr.properties文件本身就是以UTF-8编码保存的,没有使用ISO-8859-1等其他编码。
如果你用IDEA开发,需要额外设置:

  • 打开Settings → Editor → File Encodings
  • 将Default encoding for properties files设置为UTF-8
  • 勾选Transparent native-to-ascii conversion选项,避免编辑时自动转码

2. 修正MessageSource Bean配置

你当前的Bean缺少@Primary注解,会导致SpringBoot优先加载自动配置的默认MessageSource,你的编码配置不生效,调整代码如下:

@Bean
@Primary
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasenames("classpath:messages");
    messageSource.setDefaultEncoding("UTF-8");
    // 额外添加以下配置,避免fallback到系统默认编码
    messageSource.setFallbackToSystemLocale(false);
    return messageSource;
}

如果不想硬编码Bean,也可以直接在application.properties中添加配置替代:

spring.messages.basename=messages
spring.messages.encoding=UTF-8
spring.messages.fallback-to-system-locale=false

3. 检查构建工具的资源编码配置

如果是Maven项目,需要在pom.xml中指定资源文件编译编码为UTF-8,避免编译过程中转码乱码:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

4. 兜底兼容方案

如果以上配置都不生效,可以直接将properties文件中的特殊字符转为Unicode转义序列,例如:

  • publicités 替换为 publicit\u00e9s
  • images clés 替换为 images cl\u00e9s
    该方案不受编码环境影响,兼容性最高。

内容的提问来源于stack exchange,提问作者sTg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:15:03