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

Node.js获取查询参数特殊字符问题:+号变空格如何解决

解决Express.js中获取带+号的Query参数问题

问题核心是:URL里的+号会被HTTP协议默认解析为空格,所以前端传的+91到后端就变成了 91。下面给两种可行的解决办法:

方法一:直接替换空格为+

如果后端拿到的参数已经是带空格的,直接把空格替换回+就行,代码示例:

const countryCode = req.query.countryCode.replace(/\s/g, '+');

这种方式简单直接,适合只处理单个参数的场景。

方法二:重新解析原始查询字符串

如果需要全局处理所有带+的参数,可以用Node.js内置的querystring模块,自定义解析规则,避免+被转成空格:

const querystring = require('querystring');

// 从请求的原始URL中提取查询部分
const queryStr = req.originalUrl.split('?')[1];
// 自定义解码逻辑,先把+转成%2B再解码
const parsedQuery = querystring.parse(queryStr, null, null, {
  decodeURIComponent: (str) => decodeURIComponent(str.replace(/\+/g, '%2B'))
});

const countryCode = parsedQuery.countryCode;

额外建议

如果能修改前端代码,最好在发送请求前对countryCode参数做URL编码,把+转成%2B,这样后端直接用req.query.countryCode就能拿到正确值,这是更规范的做法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:06:31