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'
我试过url
和querystring
库,但似乎没有适合我的情况。
querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'
更新25/07/17
escape
和unescape
被弃用 。
使用:
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