JS对URL字符串进行编码/解码

我就是个世界14年前网页设计2099
节约时间,先写出总结,推荐使用encodeURIComponent()来对URL进行编码。

  虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串就会出现乱码问题。

[b]以下是JS下对URL进行编/解码的各种方法:[/b][separator]

[b]escape 方法:[/b]返回一个可在所有计算机上读取的编码 String 对象。
function escape(charString : String) : String
不会被此方法编码的字符: @ * / +
说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。
例如,空格返回为“%20”。(字符值大于 255 的字符以 %uxxxx 格式存储。)
注意:escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和 encodeURIComponent 方法。

[b]encodeURI 方法:[/b]返回编码为有效的统一资源标识符 (URI) 的字符串。
function encodeURI(URIString : String) : String
不会被此方法编码的字符:! @ # $ &   * ( ) = : / ; ? + '
说明:encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。

[b]encodeURIComponent 方法:[/b]返回编码为统一资源标识符 (URI) 的有效组件的字符串。
function encodeURIComponent(encodedURIString : String) : String
不会被此方法编码的字符:! * ( ) '
说明:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI 组件,请使用 encodeURI 方法进行编码。

[b]unescape 方法:[/b]从用 escape 方法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替。)
注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。

[b]decodeURI 方法:[/b]返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) : String

BTW:C#中对URL编码的方法。。。
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string)  

前面介绍的三种客户端编码方式,都可以用 Server.UrlDecode(string)   方法在后台解码。

在后台用 Server.UrlEncode(string) 方法编码的字符,可以在客户端用unescape(decodeURI(ec)) 方法进行解码。

相关文章

用inputElement.clientWidth来获得input元素的宽度

[code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w...

使用JS脚本动态调整网页图片大小

如何在网页中添加限制图片显示尺寸的功能,要求如下:[quote]大于640像素宽、480像素高的图片,全部以640*480规格显示 小于640像素宽、480像素高的图片,以原尺寸显示 点击该图片时,弹...

QQ空间免费背景皮肤

[color=#008000][b]使用方法:[/b][/color][quote]首先进入自己的QQ空间点[color=#FF0000]自定义[/color]然后复制以下代码框里的皮肤代码 在[co...

基于 jquery的树形菜单 treeview插件 简单介绍使用

项目中使用到树形菜单,正好项目有在用jquery,所以找到了这个基于 jquery的树形菜单插件[b]treeview[/b],网上对此的资料好像很少,官方文档移了地方,也不知道哪去了,最后终于找到一...

比较靠谱的Javascript库(Jquery、bootstrap、dojo、mootools、prototype、yui、zepto等)的可用CDN大全

使用CDN的好处很明显,就是速度快,比如Google提供的CDN,在全球有无数节点,比我们自己的服务器一般要快很多,另外用这些CDN我们就不用在保存一份文件了,还可以永远使用最新的版本。这里列举了几家...

用JS实现的类似框架的链接导航模式

用JS实现的类似框架的链接导航模式[separator][quote]<html><head><meta http-equiv="Content-Languag...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。