Ale*_*exD 24 escaping node.js express
我正在使用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'
Run Code Online (Sandbox Code Playgroud)
我试过url和querystring库,但似乎没有什么适合我的情况.
querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'
Run Code Online (Sandbox Code Playgroud)
小智 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);
小智 20
您应该使用decodeURI()和encodeURI()编码/解码具有外来字符的URL.
用法:
var query = 'http://google.com';
query = encodeURI(query);
query = decodeURI(query); // http://google.com
Run Code Online (Sandbox Code Playgroud)
MDN参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI
| 归档时间: |
|
| 查看次数: |
32089 次 |
| 最近记录: |