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

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

我如何解码回原来的string?

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

所以string: אובמה

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

现在整个URL如下所示: http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4

现在在我的NodeJS中,我得到了转义string%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' 

更新25/07/17

escapeunescape被弃用 。

使用:
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);

您应该使用decodeURI()encodeURI()对外部字符的URL进行编码/解码。

用法:

 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