javaGrowing

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  92 随笔 :: 33 文章 :: 49 评论 :: 0 Trackbacks

javascript中可用的编码解码函数,有如下的组合:

  • escape(string);
    unescape(string);
  • encodeURI(string);
    decodeURI(string);
  • encodeURIComponent(string);
    decodeURIComponent(string);

他们之间的区别为:

escape/unescape:
以16进制编码字符串,对空格、符号等字符用%xx编码表示,对中文等字符用%uxxxx编码表示。自javascript1.5之后,此方法已经不被推荐使用。

encodeURI/decodeURI:
以UTF-8编码编码字符串,对这些字符:“ ; , / ? : @ & = + $ ”不做编码。

encodeURIComponent/decodeURIComponent:
以UTF-8编码编码所有字符串。

因为escape/unescape已经deprecated。就不说它了,encodeURI和encodeURIComponent之前的区别用实例说明:

比如说要使用get方式将一个参数u,传递给服务器:

var  u="index.php?blogId=1&op=Default";
var  getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);

这里,如果使用了encodeURI,那么最终的getURL的值为:
http://www.simplelife.cn/test.php?p=index.php?blogId=1&op=Default

这样,对参数u中的字符"&op=Default",将不会作为字符串参数传递到服务器端,而是当作test.php的参数传递过去了,因为对"&op=Default"中的字符"&"没有做编码。
所以,在这种应用场景下,就需要使用encodeURIComponent,编码后的getURL值为:
http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault

这样,参数就可以顺利传递过去了。在服务器端得到的字符串将是正确的u。

反之,如果需要通过get方式访问某一URL,但是URL中包含中文等字符,为了防止乱码等编码问题,需要将URL通过encodeURI进行编码。
posted on 2006-11-03 15:49 javaGrowing 阅读(16157) 评论(3)  编辑  收藏 所属分类: javascript

评论

# re: javascript中的编码与解码 2012-11-19 18:22 撒点粉佛挡杀佛
撒点粉撒点粉撒  回复  更多评论
  

# re: javascript中的编码与解码 2013-05-12 15:57 14
1111  回复  更多评论
  

# re: javascript中的编码与解码 2013-07-10 16:39 pump
escape/unescape原来这样用  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问