📜  JavaScript 中的 encodeURI() 和 decodeURI() 是什么?

📅  最后修改于: 2022-05-13 01:56:11.931000             🧑  作者: Mango

JavaScript 中的 encodeURI() 和 decodeURI() 是什么?

URL 和 URI 旨在定位/识别 Internet 上可用的资源,唯一标识资源的任何内容都是其 URI,例如 id、name。 URL 指定资源及其访问协议。所有 URL 都是 URI,但并非所有 URI 都是 URL。 URI 只能包含标准 128 ASCII字符集中的某些字符。必须对不属于该集合的保留字符进行编码。这意味着我们需要在传递到 URL 时对这些字符进行编码。在 JavaScript 中,我们有两个特殊的函数来处理这些对 URI 进行编码和解码的任务。 encodeURI () 和decodeURI () 引入这些函数对非英文字符进行编码/解码,例如 URI(Uniform Resource Identifier)中使用的拉丁、希腊字母。此外,对特殊字符进行编码,替换 URI 中的空格也很有帮助;有时这些特殊字符或空格可以分隔 URI。

1. encodeURI():用于将给定的 URI 编码为 UTF-8 格式。 encodeURI ()函数将URI (类型为字符串)作为函数参数值,并通过将某些字符的每个实例替换为表示字符的 UTF-8 编码的一个、两个、三个或四个转义序列来对 URI 进行编码。

句法:

encodeURI(URI)

参数:这里,URI 是一个参数,它包含一个完整的 URI- 统一资源标识符(类型为字符串),您要对其进行编码。

返回值:上述函数将返回一个新字符串,表示作为函数参数提供的给定 URI 的“编码 URI”。

注意:在许多浏览器中,encodeURI() 不会对许多字符进行编码,以下是用于编码这些字符集的特殊字符集 [ ~!@#$&*()=:/,;?+' ] 实现了 escape()分别地。以及英文字母和数字 [AZ az 0-9 – _ . ! ~ * ' ( ) ] 不会被 encodeURI() 转义以编码完整的 URI字符串,您可以使用 encodeURI() ,如果您有部分 URI字符串,则可以使用 encodeURIComponent() 对 URI字符串的特定部分进行编码。

2. decodeURI():用于解码之前已经编码的URI。这反过来工作,采用编码字符串并用普通字符替换标记。 decodeURI ()函数将encodeURI (类型为字符串)作为函数参数值并解码给定的编码 URI,该编码 URI 先前由 encodeURI() 或类似例程创建。

句法:

decodeURI(encodedURI)

参数:这里,encodedURI 是代表一个完整的、编码的 URI(统一资源标识符)的参数。如果要解码 URI 参数,则必须仅包含编码形式的 URI。此外,如果给定参数“encodedURI”包含无效字符序列,它会引发“URIError”异常。

返回值:上面的函数将返回一个新字符串,以编码形式表示给定 URI 的解码版本。

注意:将编码 URI 中的每个转义序列替换为它所代表的字符,但不解码无法由 encodeURI 引入的转义序列。它也用于解码 Cyrillic URL;西里尔 URL 包含西里尔字母,看起来类似于拉丁字母(用于英语)中的字母,有时它用于跟踪用户并将其重定向到虚假网站。

例子:

Javascript


输出:

输出

encodeURIdecodeURI的输出