Postman发送含中文JSON数据不乱码的关键是Content-Type必须声明charset=UTF-8,Body选raw+JSON格式,响应头也需指定UTF-8编码,并在Postman设置中强制启用UTF-8响应解码。

Postman 发送含中文的 JSON 数据,只要 Content-Type 声明正确、服务端配合解码,就不会乱码。问题通常不出在“能不能传”,而出在“用什么编码传”和“后端按什么解”。
Content-Type 必须带 charset=UTF-8
这是最常漏掉也最关键的一环。Postman 不会自动加 charset,必须手动填全:
- 在 Headers 里添加或修改
Content-Type→ 值为application/json; charset=UTF-8(注意分号后紧贴,不能有空格) - 同时补上
Accept→ 值也为application/json; charset=UTF-8,否则某些 Spring Boot 服务会降级响应编码 - 如果服务端强制要求 GBK(极少见),可改用
application/json; charset=GBK,但需确保整个链路(数据库、日志、中间件)都支持 GBK
Body 选 raw + JSON,别用 form-data 或 x-www-form-urlencoded
JSON 是结构化文本,不是表单键值对。选错格式会导致中文被二次 URL 编码或解析失败:
- Body → 选
raw,右侧下拉菜单必须选JSON(不是 Text 或 JavaScript) - 不要在
form-data里塞 JSON 字符串——那样会把整个 JSON 当作一个字段的 value,且默认用 multipart 编码,中文极易变%E4%BD%A0%E5%A5%BD - 也不要选
x-www-form-urlencoded然后手动写{"name":"张三"}——这会被当成 key={"name"、value="张三"}拆开解析
Pre-request Script 不要盲目 Base64 编码中文
很多教程教你在 Pre-request Script 里对中文字段做 btoa(),结果后端一解码就是乱码。原因很直接:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
-
btoa()只接受 Latin-1 字节流,中文字符串直接传进去会先被强制转成 ISO-8859-1,丢失信息 - 正确做法是:先用
encodeURIComponent()或TextEncoder转字节,再btoa();但更推荐绕过 Base64——除非业务强要求 - 如果真要用 Base64,后端必须用相同编码(如 UTF-8 字节数组)解码,且前后端约定好原始字符集
服务端响应头也要配 charset=UTF-8
即使请求发对了,返回的中文仍可能乱码,因为 Postman 解析响应时依赖响应头里的 Content-Type:
- 检查响应头是否含
Content-Type: application/json;charset=UTF-8(注意是响应头,不是请求头) - Spring Boot 用户可在 Controller 方法里加
@ResponseBody+produces = "application/json;charset=UTF-8",或全局配置spring.http.encoding.force=true - 若服务端返回的是
Content-Type: application/json(无 charset),Postman 可能 fallback 到系统默认编码(如 Windows 的 GBK),导致显示为
最容易被忽略的是:Postman 的 “Response language encoding” 设置默认是自动探测,它可能误判。务必进 Settings → General → 勾选 Force UTF-8 encoding for responses——这不是万能解药,但对标准 API 来说,它是最稳的兜底动作。










