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

Spring Boot国际化遇ISO-8859-1字符集不支持印度语言返回???问题求助

问题解决方法

1. 显式配置MessageSource编码

Spring Boot默认读取.properties文件使用ISO-8859-1编码,该编码仅支持拉丁字符,所以意大利语、德语可以正常返回,马拉雅拉姆语、泰米尔语、印地语这类非拉丁字符会被转成问号,直接在application.properties中添加如下配置即可:

# 指定消息资源文件编码为UTF-8
spring.messages.encoding=UTF-8
# 全局请求响应编码强制使用UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true

2. 确保资源文件本身存储编码为UTF-8

需要确认你本地的messages_xx.properties文件本身就是以UTF-8编码保存的,避免文件存储阶段就出现乱码:

  • 如果你使用IDEA开发,打开Settings→File Encodings,将Default encoding for properties files设置为UTF-8,同时勾选Transparent native-to-ascii conversion选项。

3. 配置字符串消息转换器编码

@ResponseBody返回字符串时,Spring MVC默认的字符串转换器可能没有指定UTF-8编码,在你的启动类中添加如下配置即可(启动类已经实现了WebMvcConfigurer接口):

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
    converters.add(0, converter);
}

4. 接口兜底配置

如果以上全局配置不生效,也可以直接在接口注解中指定返回内容的编码:

@GetMapping(value = "/test", produces = "text/plain;charset=UTF-8")
@ResponseBody
public String test() {
    return  messages.get("hello");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:01