📅  最后修改于: 2023-12-03 15:31:40.238000             🧑  作者: Mango
在 JavaScript 中,可以使用 unescape()
和 escape()
函数进行 URL 和字符串编码和解码操作,但它们存在着一些区别。
escape()
函数用于将字符串编码成 URL 可识别的格式。它可以将某些字符(例如空格、标点符号、非 ASCII 字符)转换成 %XX
的形式表示,其中 XX 表示字符的 ASCII 码值的十六进制表示。
escape("你好,世界!") // "%u4F60%u597D%uFF0C%u4E16%u754C%uFF01"
escape("http://example.com/?q=JavaScript 中文")
// "http%3A%2F%2Fexample.com%2F%3Fq%3DJavaScript%20%u4E2D%u6587"
需要注意的是,escape()
函数会将 Unicode 字符(即大于 0x7F 的 ASCII 字符)转换成 %uXXXX
的形式表示,其中 XXXX 表示字符的 Unicode 码值的十六进制表示。
与 escape()
相反,unescape()
函数用于将 URL 编码的字符串解码成普通字符串。它可以将 %XX
形式的表示转换成对应的 ASCII 字符。
unescape("%u4F60%u597D%uFF0C%u4E16%u754C%uFF01") // "你好,世界!"
unescape("http%3A%2F%2Fexample.com%2F%3Fq%3DJavaScript%20%u4E2D%u6587")
// "http://example.com/?q=JavaScript 中文"
需要注意的是,unescape()
只能解码 %XX
和 %uXXXX
形式的编码,如果字符串中包含其他非法的 URL 编码形式,unescape()
函数将不起作用。
由于 escape()
和 unescape()
函数会将空格、标点符号和 Unicode 字符等特殊字符进行编码和解码,因此它们通常用于处理 URL 参数或者需要在 URL 中传递特殊字符的字符串。
在浏览器中,encodeURIComponent()
和 decodeURIComponent()
函数也可以用于 URL 编码和解码操作,但它们的规则更加严格,只会将特殊字符(例如空格)转换成 %XX
形式,不会对 Unicode 字符进行转换。
escape()
和 unescape()
函数可以将字符串编码成 URL 可识别的形式,并将其解码成普通字符串,适用于处理需要在 URL 中传递特殊字符的字符串。但需要注意的是,在编码和解码 Unicode 字符时,它们的行为与其他函数可能存在差异,需要谨慎使用。