我将NodeJS与Express一起使用,当我在URL中使用外来字符时,它们会自动进行编码。
如何将其解码回原始字符串?
在调用NodeJS之前,我先转义字符。
所以字符串: אובמה
אובמה
成为 %u05D0%u05D5%u05D1%u05DE%u05D4
%u05D0%u05D5%u05D1%u05DE%u05D4
现在,整个URL如下所示: http://localhost:32323/?query=%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'
我已经尝试过url和querystring图书馆,但似乎没有适合我的情况。
url
querystring
querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'
更新16/03/18
escape并且unescape已弃用。
escape
unescape
用: encodeURIComponent('אובמה') // %D7%90%D7%95%D7%91%D7%9E%D7%94 decodeURIComponent('%D7%90%D7%95%D7%91%D7%9E%D7%94') // אובמה
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') 给 "אובמה"
unescape('%u05D0%u05D5%u05D1%u05DE%u05D4')
"אובמה"
尝试:
var querystring = unescape(query);