7

是否有任何选项qs.stringify不会网址进行编码?

$ node
> var qs = require("querystring");
undefined
> qs.stringify({"url": "http://domain.com"});
'url=http%3A%2F%2Fdomain.com'

我想要以下输出:

'url=http://domain.com'
4

5 回答 5

7

有点晚了,但是对于下一个人,您可以这样做: querystring.unescape(myString)

于 2014-07-11T00:48:33.330 回答
4

再次迟到的答案,但是...
qs.stringify()具有encode:false实际上禁用 URI 编码的选项。

Qs.stringify 文档

你也可以在 nodejsrequest/request模块中使用它:

request({
  url: 'http://url.domain'
  qs: {
    qs1: 'thisIsNotEncodedInTheRequest%20://асд'
  },
  qsStringifyOptions: {
    // encoding: false /** (OLD VERSION - I think is deprecated yet) */
    encode: false
  }
});
于 2015-12-20T23:47:56.070 回答
3

不直接,不。虽然,如果您没有转义查询字符串中的值,那么使用查询字符串几乎没有任何好处。请注意,只需执行以下操作:var q = 'url=http://domain.com'

编辑:从查看源代码来看,唯一的方法是改变(即覆盖)querystring escape() 函数的行为——这是可能的,但不是一个好主意。

于 2013-08-28T19:00:37.167 回答
1

这是答案:

qs.stringify({url: "http://domain.com"}, { encodeURIComponent: uri => uri });

选项“ encodeURIComponent: uri => uri ”是禁用编码。

于 2016-05-16T04:31:40.157 回答
0

这对我有用

qs.stringify({url: "http://example.com"}, null, null, { encodeURIComponent: qs.unescape });
于 2018-04-25T00:45:08.553 回答