我正在使用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'
答案 0 :(得分:30)
更新16/03/18
escape
和unescape
为deprecated。
使用:
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);
答案 1 :(得分:18)
您应该使用decodeURI()
和encodeURI()
对包含外来字符的网址进行编码/解码。
用法:
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
答案 2 :(得分:1)
#**update may-2020**
# how to use an encoder/decoder on node js
### I am writing my answer due to I have noisy data I spend 4 hour to fixed
data email input = myemail@gmail.com
data URL input = /us/home
```
decodeURI function that only decodes a URL special character
email output =>myemail%40gmail.com
url output => %2Fus%2F
using decodeURIComponent
email output = > myemail@gmail.com
url output => /us/
```
here some clarification where you can use decodeURI and decodeURIComponent a fucntion