Postman发送GET请求时中文参数必须URL编码,因URL只允许ASCII字符,未编码的中文会因系统解码不一致导致乱码;需用encodeURIComponent()在Pre-request Script中自动编码,并配合后端URI编码配置(如Spring Boot设server.tomcat.uri-encoding=UTF-8)才能彻底解决。

Postman 发送 GET 请求时,中文查询参数不手动编码,后端几乎一定会收到乱码——这不是后端配置问题,而是 URL 规范本身决定的。
为什么中文参数必须 URL 编码
URL 只允许 ASCII 字符,空格、中文、符号(如 &、=、+)都属于非法字符。浏览器或 Postman 不会自动帮你把 name=张三 转成 name=%E5%BC%A0%E4%B8%89,除非你明确触发编码动作。
- 不编码直接发:请求 URL 变成
/api/user?name=张三,实际发送的是原始字节流,不同系统解码策略不一,大概率变成???或å¼ ä¸ - 编码后发送:
/api/user?name=%E5%BC%A0%E4%B8%89,服务端用 UTF-8 解码就能还原为“张三” -
encodeURIComponent()是唯一推荐方式,它比encodeURI()更严格,能正确处理/、?、&等分隔符
Postman 里三种靠谱的编码操作方式
别依赖右键菜单的 “EncodeURIComponent” —— 它只对当前选中字段生效,且无法复用、不可脚本化,容易漏编、难维护。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 在
Params标签页填好参数后,切到Pre-request Script,粘贴这段代码:
pm.request.url.query.each(param => {
if (param.value) {
param.value = encodeURIComponent(param.value);
}
});
- 如果参数来自环境变量(比如
{{username}}),先确保变量值是原始中文,再在脚本里编码:
const raw = pm.environment.get("username");
pm.environment.set("encodedUsername", encodeURIComponent(raw));
- 然后在
Params里直接写username→{{encodedUsername}} - 手动编码单个值?按
Ctrl+U(Windows)或Cmd+U(macOS)快捷键,比右键更快,但仅限当前输入框
哪些地方不能只靠 Header 设置解决
加 Content-Type: application/json; charset=UTF-8 对 GET 查询参数完全无效——这个 Header 只影响请求体(Body),而查询参数在 URL 里,跟 Body 无关。
- 错误做法:在 Headers 里加
Accept: application/json;charset=UTF-8试图“修复”中文参数 → 没用 - 错误做法:把中文参数塞进
Body → raw → JSON然后发 GET → 大部分服务器直接忽略 Body - 真正要设 charset 的场景,是 POST 提交 JSON 时:
Content-Type: application/json; charset=UTF-8必须显式设置,否则某些老 Spring Boot 版本默认用 ISO-8859-1 解 body
后端接收时最常被忽略的一点
即使你前端编码完美,Spring Boot 默认对 GET 参数用 ISO-8859-1 解码,而不是 UTF-8。光靠 Postman 编码不够,后端得同步改配置。
- Spring Boot 2.3+:在
application.properties加一行:server.tomcat.uri-encoding=UTF-8 - Spring Boot 3.x:该配置已废弃,需自定义
WebMvcConfigurer并重写addArgumentResolvers,或改用@RequestParam(required = false)+ 手动new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8) - Node.js / Express:默认就是 UTF-8,但若用了
query-string等第三方解析库,得确认其是否启用decodeURIComponent










