JavaScript encodeURI()和decodeURI()是什么
URL和URI的设计目的是定位/标识互联网上可用的资源,任何唯一标识资源的东西都是其URI,比如id、name。URL指定了一个资源及其访问协议。所有的URL都是URI,但不是所有的URI都是URL。URI只能包含标准ASCII字符集中的某些字符。不属于此集合的保留字符必须进行编码。这意味着当传递到URL中时,我们需要对这些字符进行编码。在JavaScript中,我们有两个特殊的函数来完成编码和解码URI的任务。 encodeURI ()和 decodeURI ()这些函数用于编码/解码非英语字符,如URI(统一资源标识符)中使用的拉丁、希腊字母。此外,它还有助于编码特殊字符,替换URI中的空格;有时这些特殊字符或空格可以作为URI的分隔符。
1. encodeURI(): 它用于将给定的URI编码为UTF-8格式。encodeURI()函数以字符串类型的URI作为函数参数值,并通过用表示字符的UTF-8编码的一个、两个、三个或四个转义序列替换每个实例来对URI进行编码。
语法:
参数:
在这里,URI是一个完整的URI-统一资源标识符(字符串类型),您希望对其进行编码。
返回值:
上述函数将返回一个表示给定URI的“已编码URI”的新字符串,该URI作为函数的参数提供。
注意:
在许多浏览器中,encodeURI()不会对许多字符进行编码。以下是一组特殊字符[ ~!@#$&*()=:/,;?+’ ],为了编码这些字符集,单独实现了escape()函数。以及英文字母和数字[ A-Z a-z 0-9 – _ . ! ~ * ‘ ( ) ]不会被encodeURI()转义。要编码完整的URI字符串,可以使用encodeURI(),如果您只想编码URI字符串的一部分,则可以使用encodeURIComponent()。
2. decodeURI():
用于解码已经之前编码的URI。它是反向工作的,将编码的字符串替换为正常字符。decodeURI()函数以字符串类型的encodedURI作为函数参数值,并解码由encodeURI()或类似例程创建的给定已编码URI。
语法:
参数: encodedURI是表示完整编码的URI(统一资源标识符)的参数。如果要解码URI参数,必须仅包含编码表单的URI。此外,如果给定的参数encodedURI包含无效的字符序列,它会抛出’URIError’异常。
返回值: 上述函数将返回表示给定URI编码形式的解码版本的新字符串。
注意: 将编码URI中的每个转义序列替换为其表示的字符,但不解码可能由encodeURI引入的转义序列。它还用于解码西里尔语URL;西里尔语URL包含类似于拉丁字母表(用于英语)中的字母的西里尔字母,有时用于跟踪用户并将其重定向到假网站。
示例:
JavaScript
输出: