NodeJS Express对URL进行编码 - 如何解码

时间:2016-01-03 12:44:51

标签: node.js express escaping

我正在使用NodeJS和Express,当我在URL中使用外来字符时,它们会自动编码。

如何将其解码回原始字符串?

在调用NodeJS之前,我转义了字符。

所以字符串:אובמה

成为%u05D0%u05D5%u05D1%u05DE%u05D4

现在,整个网址如下:http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

现在在我的NodeJS中,我获得了转义字符串%u05D0%u05D5%u05D1%u05DE%u05D4

这是相关代码:

var url_parts = url.parse(req.url, true);
var params = url_parts.query;
var query = params.query; // '%u05D0%u05D5%u05D1%u05DE%u05D4'

我已经尝试了urlquerystring个库,但似乎没有任何内容符合我的要求。

querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'

3 个答案:

答案 0 :(得分:30)

更新16/03/18

escapeunescapedeprecated

使用:
encodeURIComponent('אובמה') // %D7%90%D7%95%D7%91%D7%9E%D7%94
decodeURIComponent('%D7%90%D7%95%D7%91%D7%9E%D7%94') // אובמה

旧答案

unescape('%u05D0%u05D5%u05D1%u05DE%u05D4')提供"אובמה"

尝试:

var querystring = unescape(query);

答案 1 :(得分:18)

您应该使用decodeURI()encodeURI()对包含外来字符的网址进行编码/解码。

用法:

var query = 'http://google.com';
query = encodeURI(query);
query = decodeURI(query); // http://google.com

MDN参考:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI

答案 2 :(得分:1)

#**update may-2020**
# how to use an encoder/decoder on node js
### I am writing my answer due to I have noisy data I spend 4 hour to fixed

data email   input = myemail@gmail.com
data URL input = /us/home

```
decodeURI function that only decodes a URL special character 

  email output =>myemail%40gmail.com 
  url output => %2Fus%2F

using decodeURIComponent 
  email output = > myemail@gmail.com
  url output => /us/
```
here some clarification where you can use decodeURI and  decodeURIComponent   a fucntion