Postman 响应体中文乱码通常是因为服务端返回的 HTTP 头中缺少 charset=utf-8 声明,Postman 自身没有直接修改响应编码的界面按钮,需优先检查服务端配置。
先说结论:乱码根源多在服务端响应头缺失 charset 定义,而非 Postman 客户端设置问题。
- 先确认:检查响应头 Content-Type 是否包含 charset 字段
- 先处理:修改服务端代码强制指定 UTF-8 编码输出
- 再验证:重新发送请求观察响应体是否正常显示中文
快速处理思路
Postman 没有提供手动切换响应编码的菜单,遇到乱码时不要浪费时间寻找客户端设置,应按以下顺序操作:
- 查看响应头 Headers 面板,确认 Content-Type 值
- 若缺少 charset,联系后端开发修改接口响应头
- 临时查看可使用 Send and Download 功能保存文件后用编辑器打开
为什么会这样
Postman 解析响应体编码完全依赖服务端返回的 HTTP 头信息,不会像浏览器那样尝试智能猜测。
HTTP 协议标准规定,客户端应根据 Content-Type 头中的 charset 参数决定解码方式。如果服务端返回 text/html 或 application/json 但未声明 charset,Postman 可能默认使用 ISO-8859-1 或其他系统编码解析二进制流,导致中文字符显示为乱码。这不是 Postman 的缺陷,而是遵循严格的协议解析逻辑,因此客户端无法强制覆盖编码设置。
分步处理
步骤 1:检查响应头信息
在 Postman 响应区域点击 Headers 标签,查找 Content-Type 字段。正常应显示为 application/json; charset=utf-8 或 text/html; charset=utf-8。如果仅显示 application/json 而无 charset 后缀,说明服务端未指定编码。
步骤 2:修改服务端配置
这是根本解决方法。在后端代码中设置响应头。例如 Java Spring Boot 可在 @RequestMapping 中 produces 属性指定,或全局配置 StringHttpMessageConverter 设置为 UTF-8。Python Flask 可使用 make_response 并设置 mimetype 包含 charset。
步骤 3:临时查看方案
若无法立即修改服务端,点击 Postman 发送按钮旁边的下拉箭头,选择 Send and Download。将响应保存为本地文件,使用 VS Code 或 Notepad++ 打开,这些编辑器支持手动切换编码格式查看原始内容。
步骤 4:使用 Test 脚本验证
在 Postman Tests 标签页输入 console.log(pm.response.text());。发送请求后查看 Postman 控制台 Console。如果控制台输出正常而 Body 显示乱码,说明是渲染问题;如果控制台也是乱码,说明数据传输阶段已损坏。
怎么验证是否生效
完成服务端修改后,在 Postman 中重新发送请求。观察 Body 标签页中的中文是否恢复可读。同时再次检查 Headers 中的 Content-Type,确认已包含 charset=utf-8。若使用 Send and Download 方案,用编辑器打开文件后切换编码为 UTF-8,确认内容无乱码。
常见坑
坑 1:以为 Postman 有编码设置开关
Postman 设置菜单中没有 Response Encoding 选项,不要在此处浪费时间。所有编码决策权在于服务端响应头。
坑 2:忽略 Content-Type 大小写
HTTP 头字段不区分大小写,但 charset 值建议统一小写 utf-8。部分严格解析的工具可能对 UTF-8 和 utf-8 处理不一致,建议服务端统一输出小写。
坑 3:本地文件编码干扰
使用 Send and Download 保存文件时,若编辑器默认编码不是 UTF-8,打开文件仍会乱码。需手动在编辑器中切换编码格式进行验证。
常见问题
Postman 哪里可以手动设置响应编码?
Postman 客户端不支持手动设置响应编码,必须依赖服务端返回的 Content-Type 头中的 charset 参数。
为什么浏览器能显示正常但 Postman 乱码?
浏览器具备智能编码猜测功能,当缺少 charset 声明时会尝试多种编码匹配,而 Postman 严格遵循 HTTP 头定义,不主动猜测。
JSON 响应体也会乱码吗?
会。虽然 JSON 标准建议 UTF-8,但如果服务端返回 Content-Type: application/json 且未指定 charset,同时实际字节流是 GBK 等其他编码,Postman 仍会解析错误。
参考来源
- HTTP 协议规范 (RFC 7231) - Content-Type Header Field
- Postman 官方文档 - Working with APIs