Node.js - querystring.unescape() 方法



node.js 的 querystring 模块提供了用于解析和格式化 URL 查询字符串的实用程序。Node.js querystring.unescape() 方法解码提供的字符串中的 URL 百分比编码字符,并返回一个普通字符串。此方法从提供的字符串中删除 % 符号并返回一个普通字符串。

Node.js querystring.unescape() 方法由 querystring.parse() 方法使用,不直接使用。默认情况下,querystring.unescape() 方法尝试使用 JavaScript 内置的 decodeURIComponent() 方法进行解码。

语法

以下是Node.js querystring.unescape()方法的语法 -


 querystring.unescape(str)

参数

此方法接受四个参数。下面将对此进行介绍。

  • str − 此参数将保存 URL 百分比编码的字符,该字符将被解码为普通字符串。

返回值

此方法将对给定的 URL 百分比编码字符进行解码,并返回一个普通字符串。

如果我们将 URL 百分比编码的字符传递给 querystring.unescape() 方法Node.js它将返回一个 Normal 字符串,不包括 URL 百分比编码的字符。

在以下示例中,我们使用 querystring.unescape() 方法对 URL 百分比编码Node.js字符串进行编码。


const querystring = require('node:querystring');

var result = "Articles%20Node.js%20Tutorialspoin";
console.log(querystring.escape(result));

var unescaped = result;
console.log(querystring.unescape(unescaped));

输出

internal/modules/cjs/loader.js:596
throw err;
^

Error: Cannot find module 'node:querystring'at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 - 要查看实际结果,请在本地执行上述代码。

正如我们在下面的输出中看到的,Node.js querystring.unescape() 方法返回了一个普通字符串。

Articles Node.js qikepu

如果我们向Node.js decodeURIComponent() 方法传递一个 URL 百分比编码字符的字符串,则该方法将返回一个没有 URL 百分比编码字符的 Normal 字符串。

以下示例演示了 Node.js decodeURIComponent() 方法的用法。


const querystring = require('node:querystring');
let string = "Articles%20Nodejs%20qikepu";
let result = decodeURIComponent(string);
console.log(result)

输出

internal/modules/cjs/loader.js:596
throw err;
^

Error: Cannot find module 'node:querystring'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
at Module._compile (internal/modules/cjs/loader.js:702:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 - 如果我们在本地编译并运行上述程序,Node.js decodeURIComponent() 方法将返回一个正常的字符串。

Articles Nodejs qikepu

如果将包含 URL 百分比编码字符的字符串传递给 Node.js querystring.unescape() 方法和 decodeURIComponent() 方法Node.js它们将返回相同的普通字符串。

在以下示例中,我们尝试通过Node.js querystring.unescape() 和 Node.js decodeURIComponent() 方法解码 URL 百分比编码字符


const querystring = require('node:querystring'); 	
let string = "Articles%20Nodejs%20qikepu";
let unescaped = querystring.unescape(string)
let decodedURI = decodeURIComponent(string);

console.log("The result of querystring() method: " + unescaped);
console.log("The result of decodeURIComponent() method: " + decodedURI)

if (unescaped === decodedURI){
	 	console.log("Both the results are same.");
}
else{
	 	console.log("Both the results are not same");
}

输出

internal/modules/cjs/loader.js:596
throw err;
^

Error: Cannot find module 'node:querystring'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
at Function.Module._load (internal/modules/cjs/loader.js:520:25)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
at Module._compile (internal/modules/cjs/loader.js:702:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 - 要查看实际结果,请在本地执行上述代码。

执行上述程序后,两种方法都返回了相同的字符串。

The result of querystring() method: Articles Nodejs qikepu
the result of decodeURIComponent() method: Articles Nodejs qikepu
Both the results are same.