📅  最后修改于: 2023-12-03 15:17:55.410000             🧑  作者: Mango
在 Node.js 中,querystring 模块提供了一些用于解析和编码查询字符串的函数。其中,querystring.escape() 方法用于对给定的字符串进行 URI 编码,以便于在 URL 中传递参数时进行传递。
当我们需要在 URL 中传递参数时,需要对参数进行编码以避免出现无法识别的字符。
例如,我们要传递参数 name=小明&age=18
:
const params = { name: '小明', age: 18 };
const queryString = Object.keys(params).map(key => `${key}=${params[key]}`).join('&');
console.log(`https://example.com?${queryString}`);
输出的 URL 为:https://example.com?name=小明&age=18
。但是,如果直接在 URL 中传递中文或特殊字符,可能会导致解析错误或不能正常显示。
这时,我们就需要使用 querystring.escape()
方法对参数进行编码:
const params = { name: '小明', age: 18 };
const queryString = Object.keys(params).map(key => `${key}=${querystring.escape(params[key])}`).join('&');
console.log(`https://example.com?${queryString}`);
输出的 URL 为:https://example.com?name=%E5%B0%8F%E6%98%8E&age=18
。可以看到,参数中的中文已经被编码成了 %E5%B0%8F%E6%98%8E
。
querystring.escape(str)
参数说明:
str
:要进行 URI 编码的字符串。返回值:返回进行 URI 编码后的字符串。
const querystring = require('querystring');
const str = 'hello world!';
const escapedStr = querystring.escape(str);
console.log(`原字符串:${str}`);
console.log(`编码后字符串:${escapedStr}`);
输出结果为:
原字符串:hello world!
编码后字符串:hello%20world%21
querystring.escape()
方法仅会对一些特殊字符进行 URI 编码,如 ,&,=,
,/,:,#` 等。其他字符不需要进行编码。querystring.unescape()
方法。