返回

URI编码技巧:encodeURI()和encodeURIComponent()大揭秘

前端

什么是URL编码?

URL编码是一种将字符串转换为URL安全格式的方法。URL安全格式意味着字符串中的所有特殊字符都被替换为百分号编码(%xx),其中xx是该字符的十六进制值。例如,空格字符被编码为%20,而问号字符被编码为%3F。

encodeURI()函数

encodeURI()函数用于对字符串进行编码,以便它们可以在URL中安全地使用。该函数不会对ASCII字母和数字以及以下ASCII标点符号进行编码:

  • -
  • _
  • .
  • !
  • ~
  • *
  • '
  • (
  • )

这意味着您可以使用encodeURI()函数来对URL中的参数和查询字符串进行编码,而不用担心这些字符会被浏览器误解。

encodeURIComponent()函数

encodeURIComponent()函数用于对字符串进行编码,以便它们可以在URL中安全地使用。该函数会对字符串中的所有字符进行编码,包括ASCII字母和数字。这意味着您可以使用encodeURIComponent()函数来对URL中的任何部分进行编码,包括路径、查询字符串和片段。

encodeURI()和encodeURIComponent()函数的示例

以下是encodeURI()和encodeURIComponent()函数的一些示例:

encodeURI("Hello world!"); // "Hello%20world!"
encodeURIComponent("Hello world!"); // "Hello%20world%21"

如您所见,encodeURI()函数不会对空格字符进行编码,而encodeURIComponent()函数会对空格字符进行编码。

何时使用encodeURI()和encodeURIComponent()函数

您应该在以下情况下使用encodeURI()函数:

  • 您需要对URL中的参数和查询字符串进行编码。
  • 您需要对URL中的路径进行编码,但您不希望对ASCII字母和数字进行编码。

您应该在以下情况下使用encodeURIComponent()函数:

  • 您需要对URL中的任何部分进行编码,包括路径、查询字符串和片段。
  • 您需要对ASCII字母和数字进行编码。

结论

encodeURI()和encodeURIComponent()函数都是非常有用的函数,可以用来对字符串进行编码,以便它们可以在URL中安全地使用。如果您需要对URL中的任何部分进行编码,那么您应该使用encodeURIComponent()函数。如果您只需要对URL中的参数和查询字符串进行编码,那么您可以使用encodeURI()函数。