无法解析 url 中的 & 符号



我在解析URL时遇到了一个问题。

例如,假设url是http://localhost?query=Tom&Jerry

当我尝试使用获取查询字符串时

const req_query = `${req.protocol}://${req.get('host')}${(req.originalUrl)}`;
const parseURL = require("url");
const uri_parse = parseURL.parse(req_query, true);
console.log(uri_parse.query)

我得到的输出是

{query:"汤姆","杰瑞":",}

而不是

{query:"Tom&Jerry"}

我知道;是一个特殊字符,用于分隔查询。我能做到这一点吗?请帮我解决这个问题。

&符号用于区分不同的查询参数。例如:

url?firstName=Sethuraman&lastname=Srinivasan

解析后,你会得到:

{
firstName : "Sethuraman",
lastName : "Srinivasan"
}

这就是你面临这个问题的原因。


解决方案是以UTF秒对特殊符号进行编码。要对其进行编码,请在前端客户端中使用encodeURIComponent((。

const baseURL = "http://localhost";
let ValueToBeEncoded = "Tom & Jerry";
const queryURL = `${baseURL}?query=${encodeURIComponent(ValueToBeEncoded)}`

因此,字符串应该是http://localhost?query=Tom%20%26%20Jerry

最新更新