我在解析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