收藏:Javascript下的urlencode方法

实现一个功能需要把一个中文词语编码后拼到百度的URL中,在新窗口打开,实现搜索,需要一个类似与PHP中的URlencode的功能,找了好久都没找到。escape、encodeURI、encodeURIComponent都不行。忙活了半天,终于让我找到了,赶紧收藏下来。

<script language="vbscript">
Function str2asc(strstr)
str2asc = hex(asc(strstr))
End Function
Function asc2str(ascasc)
asc2str = chr(ascasc)
End Function
</script>
<script language="javascript" type="text/javascript">
function UrlEncode(str){
   var ret="";
   var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%";
   for(var i=0;i<str.length;i++){
   var chr = str.charAt(i);
     var c=str2asc(chr);
     if(parseInt("0x"+c) > 0x7f){
       ret+="%"+c.slice(0,2)+"%"+c.slice(-2);
     }else{
       if(chr==" ")
         ret+="+";
       else if(strSpecial.indexOf(chr)!=-1)
         ret+="%"+c.toString(16);
       else
         ret+=chr;
     }
   }
   return ret;
}
</script>

用这样的办法调用:

<script language="javascript" type="text/javascript">
alert(UrlEncode("孙毓波大好人"));
</script>

 评论
  GBK的确是不被支持的,可用了你这段代码还是转不了GBK字符

  不错

  终于找到你这了,太好了 楼下提到的encodeuricomponent 这是不能吧文字转成gb2312编码的 encodeuricomponent转码效果 汉字 = %e6%b1%89%e5%ad%97 本文的效果 字 = %ba%ba%d7%d6

  谢谢!!!

  首先,你用的不是JavaScript,而是VBScript(只適用於IE)。 第二,其實用JavaScript 的 encodeURIComponent()便行了︰ var url=encodeURIComponent("http://www.google.com/") alert(url) 出來的會是「http%3A%2F%2Fwww.google.com%2F」。
回复:嗯,确实是只适用于IE。但你说的这个encodeURIComponent不适用于GBK吧?我记得是有个什么不适用来着,否则也用不着大费周章。

  呵呵 老同学 今天搜到你这里了 碰到和你一样的问题 搜索图片 呵呵 谢谢哈 新年快乐!

  顶!!!

  来个牛人,把那段vb代码写出js版本,就完美了。

  顶一下,不过怎么又vb脚本啊,郁闷。http://www.2zhai.com

  Javascript 中有 encodeuricomponent 可以实现上述功能,在PHP 中直接urldecode即可

  support you

  你好,代码在ie6下能用,可是在ff下不能用,请问能提供一下更详细的测试版吗?谢谢!

  测试一下

  JS 中有api, 查一下吧
 发表评论
姓   名: