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

Spring Boot API印地语文本在Postman正常 移动端请求时数据接收异常

问题根因
  • 核心为字符编码不一致:Postman默认会自动给请求加UTF-8编码标识,而移动应用发送请求时未统一使用UTF-8编码,导致印地语这类多字节Unicode字符被单字节编码(如ISO-8859-1、ASCII)截断转义,最终出现返回值中的\u0015这类不可见控制字符。
  • 次要原因可能是Spring Boot侧未强制设置请求解码编码,当请求未指定编码时会使用服务器操作系统默认编码,无法正确解析印地语字符。
  • 极端情况下是移动端序列化JSON时就用错误编码转字节流,数据传输到后端时已经损坏,无法正常解码。
修复方案

移动端侧(优先处理)

  • 发送带请求体的接口请求时,必须在Content-Type请求头中明确指定编码,值为Content-Type: application/json; charset=utf-8
  • 检查所用网络请求库的配置,序列化JSON字符串时强制指定UTF-8编码转字节流,禁止使用系统默认编码。
  • 可通过本地日志校验发送前的印地语原文和编码后的字节序列,确认发送环节无数据损坏。

Spring Boot后端侧(兜底兼容)

  • 在配置文件中强制全局请求响应使用UTF-8编码,properties配置示例:
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force-request=true
server.servlet.encoding.force-response=true
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
  • 若使用自定义消息转换器,需给Jackson转换器明确设置默认UTF-8编码,代码示例:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setDefaultCharset(StandardCharsets.UTF_8);
    return converter;
}
  • 可新增全局请求过滤器,当请求头Content-Type未指定charset时,强制使用UTF-8解码请求体。
验证方式

修复完成后先抓包确认移动端请求头携带了charset=utf-8标识,再打印后端接收到的原始请求体内容,确认和移动端发送的印地语原文一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:03