typescript 对URl进行编码和解码
URI是统一资源标识符的意思。URL是最常见的URIS之一。我们使用URL(统一资源定位器)来寻找位于互联网上的网页。网页也包含资源。
简单地说,URI是一个包含一些字符的字符串,我们可以用URI来识别网络上的物理和逻辑资源。URL是URI的一个子集,它存储了网络上的文件地址。
对URI进行编码的原因
看完本教程的标题后,你脑海中出现的第一个问题是,为什么我们需要对URI进行编码和解码。答案很简单。URL应该只包含128个ASCII字符集中的字符。因此,我们需要对一些不属于128个ASCII字符集的字符进行编码。
因此,我们必须通过使用转义序列来转义特殊字符,如’!’和’空格’,我们可以通过对URIS进行编码来做到这一点。如果我们不转义这种特殊字符,可能会引起问题。
在TypeScript中对URI进行编码
在TypeScript中,有两种方法可以对URI进行编码。encodeURI()和encodeURIComponent()。这两个方法都是内置的库方法,将一些特殊的字符如空格编码为一个、两个、三个或四个转义序列。这里,转义序列代表字符的UTF-8编码。
encodeURI()和encodeURIComponent()方法的主要区别是,encodeURI()对整个URL或URI进行编码,但encodeURIComponent()对URL的部分进行编码,这部分可以作为URL的查询参数。
语法
用户可以按照下面的语法,使用encodeURI()和encodeURIComponent()方法对URI进行编码。
这里的URI是一个需要通过转义一些特殊字符来编码的URI。
示例 1
在输出中,我们看到空格是由%20转义的,'<’ is escaped by %3C, and ‘>’是由%3E转义的。
输出
上述代码将产生以下输出 —
示例 2
这个例子演示了使用encodeURIComponent()方法来对URL的部分进行编码。我们已经取得了包含特殊字符的URL字符串。之后,我们使用encodeURIComponent()方法对URL的 “index.php<>”部分进行编码。此外,我们还使用encodeURIComponent()对URL中的 “www. Tutorialspoint.com “部分进行了编码。
输出显示,它不是对整个URL进行编码,而是对URL的某一部分进行编码。
输出
上述代码将产生以下输出 —
在TypeScript中对URI进行解码
很明显,我们需要对编码后的URI进行解码。解码器将字符的转义序列替换为特殊字符,并从编码后的URI中生成原始URI。我们可以使用decodeURI()方法对URI进行解码,或者使用decodeURIComponent()方法对URI的一部分进行解码。
语法
用户可以按照下面的语法,使用decodeURI()和decodeURIComponent()方法对编码的URL或其组件进行解码。
这里encoded_URI是一个需要被解码的编码URI或URL。
示例 1
在这个例子中,我们首先使用encodeURI()方法对URI进行编码,然后使用decodeURI()方法对URI进行解码。
输出显示的URI与原文相同,因为我们在对URI进行编码后进行了解码。
输出
上述代码将产生以下输出 —
示例 2
下面的例子演示了decodeURIComponent()方法的使用。我们采取了google域名的URL,并使用encodeURIComponent()方法对URL中包含空格和其他特殊字符的一些部分进行编码。
在输出中,用户可以看到该编码的URL。我们从输出中复制了编码后的URL,并使用decodeURIComponent()方法来解码只有编码的部分,而不是解码整个URL。在对编码部分进行解码后,它看起来与原始URL相似。
输出
上述代码将产生以下输出 —
在现实生活的开发中,有一些编码和解码URI的用例。例如,我们想从使用表单的用户那里获取一个字符串,并使用这些数据制作一个URL。用户可以输入空格和128个ASCII字符集以外的字符,然后我们需要对它们进行编码。
有时,我们需要只对URL的查询参数进行编码。在这种情况下,我们可以使用encodeURIComponent()方法。一旦我们对URI进行编码,当我们想显示URI或URL时,我们必须对它进行解码。