我正在使用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'
我试过url
和querystring
库,但似乎没有什么适合我的情况.
querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'
小智.. 45
更新16/03/18
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);
更新16/03/18
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