📜  js 转义 url 参数 - Javascript (1)

📅  最后修改于: 2023-12-03 14:43:33.463000             🧑  作者: Mango

JS 转义 URL 参数 - Javascript

在 Web 开发过程中,我们经常需要通过 URL 参数将数据传递给后端服务,但是由于 URL 中存在一些特殊字符,直接使用会导致数据传输出现问题,因此需要在使用之前进行转义。

Javascript 提供了 URI 编码和解码的方法,我们可以使用 encodeURIComponent() 方法来对 URL 参数进行编码和 decodeURIComponent() 方法来进行解码。

URI 编码

URI 编码是将 URL 中的非 ASCII 字符转换为特殊字符序列的过程,使得它们能够在互联网上传输。例如将中文字符编码为 %E4%BD%A0%E5%A5%BD

以下是一个例子:

const str = "Hello, 世界!";
const encodedStr = encodeURIComponent(str);
console.log(encodedStr); // "Hello%2C%20%E4%B8%96%E7%95%8C%21"

在上面的例子中,我们首先定义了一个字符串 str,然后使用 encodeURIComponent() 方法对其进行编码。编码后的字符串为 Hello%2C%20%E4%B8%96%E7%95%8C%21,可以看到所有的非 ASCII 字符均被转换为了特殊字符序列。

URI 解码

URI 解码是将 URL 中的特殊字符序列还原成它们原来的形式的过程,例如将 %E4%BD%A0%E5%A5%BD 解码为"你好"。

以下是一个例子:

const encodedStr = "Hello%2C%20%E4%B8%96%E7%95%8C%21";
const decodedStr = decodeURIComponent(encodedStr);
console.log(decodedStr); // "Hello, 世界!"

在上面的例子中,我们首先定义了一个编码后的字符串 encodedStr,然后使用 decodeURIComponent() 方法对其进行解码。解码后的字符串为 "Hello, 世界!",可以看到所有的特殊字符序列均被还原为它们原来的形式。

总之,使用 encodeURIComponent()decodeURIComponent() 方法可以有效地解决 URL 参数中存在特殊字符的问题,但需要注意的是,在使用之前需要判断网络请求的目标是否能够正确处理这些特殊字符。