encodeURI
、encodeURIComponent
、decodeURI
和 decodeURIComponent
是 JavaScript 中用于对 URI(Uniform Resource Identifier,统一资源标识符)进行编码和解码的函数。
-
encodeURI
:用于对完整的 URI 进行编码,包括协议名、主机名、端口号、路径、查询字符串等。它会将除 RFC2396 保留字符(如:
、/
、?
、#
、[
、]
、@
等)之外的所有字符进行编码。通常用于整个 URL 的编码。使用场景:当需要对整个 URL 进行编码时,可以使用
encodeURI
。 -
encodeURIComponent
:用于对 URI 组件(如查询字符串的键值对)进行编码。它会对所有非 ASCII 字符以及某些特殊字符(如&
、=
、+
等)进行编码。通常用于对 URL 中的某个部分(如查询参数)进行编码。使用场景:当需要对 URL 中的某个部分(如查询参数)进行编码时,可以使用
encodeURIComponent
。 -
decodeURI
:用于对已编码的完整 URI 进行解码。它是encodeURI
的逆操作。使用场景:当需要对已编码的整个 URL 进行解码时,可以使用
decodeURI
。 -
decodeURIComponent
:用于对已编码的 URI 组件进行解码。它是encodeURIComponent
的逆操作。使用场景:当需要对已编码的 URL 中的某个部分(如查询参数)进行解码时,可以使用
decodeURIComponent
// 编码整个 URL var uri = "https://example.com/path?query=value"; var encodedUri = encodeURI(uri); console.log(encodedUri); // 输出 "https://example.com/path?query=value" // 编码 URL 中的查询参数 var query = "value1&value2=value3"; var encodedQuery = encodeURIComponent(query); console.log(encodedQuery); // 输出 "value1%26value2%3Dvalue3" // 解码整个 URL var decodedUri = decodeURI(encodedUri); console.log(decodedUri); // 输出 "https://example.com/path?query=value" // 解码 URL 中的查询参数 var decodedQuery = decodeURIComponent(encodedQuery); console.log(decodedQuery); // 输出 "value1&value2=value3"