JS对URL字符串进⾏编码解码分析
虽然escape()、encodeURI()、encodeURIComponent()三种⽅法都能对⼀些影响URL完整性的特殊
字符进⾏过滤。但后两者是将字符串转换为UTF-8的⽅式来传输,解决了页⾯编码不⼀⾄导致的乱码问题。例如:发送页与接受页的编码格式(Charset)不⼀致(假设发送页⾯是GB2312⽽接收页⾯编码是UTF-8),使⽤escape()转换传输中⽂字串就会出现乱码问题。
以下是JS下对URL进⾏编/解码的各种⽅法:
escape ⽅法:返回⼀个可在所有计算机上读取的编码 String 对象。
function escape(charString : String) : String
不会被此⽅法编码的字符: @ * / +
说明:escape ⽅法返回⼀个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、
重⾳符号以及任何其他⾮ ASCII 字符都⽤ %xx 编码替换,其中 xx 等于表⽰该字符的⼗六进制数。
例如,空格返回为“%20”。(字符值⼤于 255 的字符以 %uxxxx 格式存储。)
注意:escape ⽅法不能⽤来对“统⼀资源标识符”(URI) 进⾏编码。对其编码应使⽤ encodeURI 和encodeURIComponent ⽅法。
encodeURI ⽅法:返回编码为有效的统⼀资源标识符 (URI) 的字符串。
function encodeURI(URIString : String) : String
不会被此⽅法编码的字符:! @ # $ & * ( ) = : / ; ? + '
说明:encodeURI ⽅法返回⼀个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的
字符串。encodeURI 不对下列字符进⾏编码:“:”、“/”、“;”和“?”。请使⽤
encodeURIComponent 对这些字符进⾏编码。
encodeURIComponent ⽅法:返回编码为统⼀资源标识符 (URI) 的有效组件的字符串。
function encodeURIComponent(encodedURIString : String) : String
不会被此⽅法编码的字符:! * ( ) '
说明:encodeURIComponent ⽅法返回⼀个已编码的 URI。如果将编码结果传递给decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent ⽅法将对所有字符编码,请注意,如果该字符串代表⼀个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被
编码,这样,当该字符串作为请求发送到 Web 服务器时它将是⽆效的。如果字符串中包含多个 URI
组件,请使⽤ encodeURI ⽅法进⾏编码。
unescape ⽅法:从⽤ escape ⽅法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
说明:unescape ⽅法返回⼀个包含 charstring 内容的字符串值。所有以 %xx ⼗六进制形式编码的
字符都⽤ ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符⽤⼗六
进制编码 xxxx 的 Unicode 字符代替。)
注意:unescape ⽅法不应⽤于解码“统⼀资源标识符”(URI)。请改⽤ decodeURI 和decodeURIComponent ⽅法。
decodeURI ⽅法:返回⼀个已编码的统⼀资源标识符 (URI) 的⾮编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent ⽅法:返回统⼀资源标识符 (URI) 的⼀个已编码组件的⾮编码形式。
function decodeURIComponent(encodedURIString : String) : String
BTW:C#中对URL编码的⽅法。。。
编码:Server.UrlEncode(string)
在线url网址编码解码
解码:Server.UrlDecode(string) 前⾯三种客户端编码都可以⽤这个⽅法在后台解码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。