NodeJS Express 编码 URL - 如何解码
NodeJS Express encodes the URL - how to decode
我在 Express 中使用 NodeJS,当我在 URL 中使用外来字符时,它们会自动进行编码。
如何解码回原来的字符串?
在调用 NodeJS 之前,我对字符进行了转义。
所以字符串:אובמה
变成%u05D0%u05D5%u05D1%u05DE%u05D4
整个 URL 现在看起来像: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'
更新 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);
你应该使用 decodeURI()
和 encodeURI()
到 encode/decode 一个 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
#**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
解码来自 URL
的查询参数
decodeURIComponent 不能直接用于解析来自 URL 的查询参数。它需要一些准备。
function decodeQueryParam(p) {
return decodeURIComponent(p.replace(/\+/g, ' '));
}
console.log(decodeQueryParam('search+query%20%28correct%29'));
// 'search query (correct)'
我在 Express 中使用 NodeJS,当我在 URL 中使用外来字符时,它们会自动进行编码。
如何解码回原来的字符串?
在调用 NodeJS 之前,我对字符进行了转义。
所以字符串:אובמה
变成%u05D0%u05D5%u05D1%u05DE%u05D4
整个 URL 现在看起来像: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'
更新 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);
你应该使用 decodeURI()
和 encodeURI()
到 encode/decode 一个 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
#**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
解码来自 URL
的查询参数decodeURIComponent 不能直接用于解析来自 URL 的查询参数。它需要一些准备。
function decodeQueryParam(p) {
return decodeURIComponent(p.replace(/\+/g, ' '));
}
console.log(decodeQueryParam('search+query%20%28correct%29'));
// 'search query (correct)'