无法在expressjs路由器URL请求中保留特殊字符

无法在expressjs路由器URL请求中保留特殊字符,express,Express,我试图使用以下条件从数据库中查询记录:维生素+锌每5ML糖浆100MG/10MG 这是我的请求url的外观: http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP router.get('/search', (req, res, next) => { const query = req.query; console.log(query.key); .

我试图使用以下条件从数据库中查询记录:维生素+锌每5ML糖浆100MG/10MG

这是我的请求url的外观:

http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP
router.get('/search', (req, res, next) => {
  const query = req.query;
  console.log(query.key);

  .... omitted

});
这是我的express路由器,看起来像:

http://localhost:4200/api/search?key=VITAMINS%20+%20ZINC%20100MG/10MG%20PER%205ML%20SYRUP
router.get('/search', (req, res, next) => {
  const query = req.query;
  console.log(query.key);

  .... omitted

});
这里的问题是我无法保留
+
特殊字符,因此最终打印出的日志不是路由器内的原始标准

VITAMINS   ZINC 100MG/10MG PER 5ML SYRUP

就URI而言,
+
字符是其中一种

当保留集中的字符(“保留字符”)已 特定上下文中的特殊含义(“保留目的”),以及URI scheme说有必要将该字符用于其他字符 则必须对字符进行百分比编码

在您的情况下,在点击客户端的URL之前,需要对查询字符串进行百分比编码:

蛋白质组分(“维生素+锌”)


然后在服务器端(即express)使用
decodeURIComponent()

对查询进行解码您是否尝试对查询字符串进行编码?我尝试了decodeURIComponent,但仍然与记录的输出相同。我的意思是,如果您可以控制生成URL的代码,您可以在客户端使用
encodeURIComponent()
,并在服务器端使用解码。@Ankit嘿,我能够解决我的问题,这要感谢您的想法。首先,我在客户端执行了一个
encodeURIComponent
,然后在服务器上执行了一个
decodeURIComponent
,以呈现相同的标准,非常感谢。。。介意回答一下吗?我很乐意接受。