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

Spring Boot POST接收含西语重音JSON报Invalid UTF-8 middle错误如何解决

问题根因

Invalid UTF-8 middle错误本质是客户端发送的JSON请求实际编码不符合UTF-8规范,或是Spring Boot默认的HTTP消息转换器没有强制使用UTF-8解析请求体导致的。


解决方案

  • 校验客户端请求编码
    确保发送POST请求的客户端明确携带Content-Type: application/json;charset=UTF-8请求头,且请求体实际编码确实为UTF-8。常见问题是部分客户端默认用ISO-8859-1、Windows-1252编码发送带西语重音的字符,导致编码不匹配。如果用Postman测试,可在Body的raw选项右侧确认编码选择为UTF-8。
  • 全局配置Spring MVC强制UTF-8编码
    在application.properties或application.yml中添加以下配置,覆盖Spring默认编码规则:
    # application.properties 配置
    server.servlet.encoding.charset=UTF-8
    server.servlet.encoding.enabled=true
    server.servlet.encoding.force=true
    spring.http.encoding.charset=UTF-8
    spring.http.encoding.enabled=true
    spring.http.encoding.force-request=true
    spring.http.encoding.force-response=true
    
  • 自定义Jackson消息转换器强制UTF-8解析
    若全局配置不生效,可手动注册Jackson的HTTP消息转换器,明确指定编码为UTF-8:
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
            converter.setDefaultCharset(StandardCharsets.UTF_8);
            converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON));
            // 优先使用自定义转换器
            converters.add(0, converter);
        }
    }
    
  • 补充实体类无参构造函数
    你当前的TranslateString实体类仅提供了全参数构造函数,Jackson反序列化时如果找不到无参构造函数也可能触发解析异常,给实体类补充无参构造即可:
    public TranslateString() {
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:30:04