当前位置: 主页 > 日志 > WEB UI >

ajax URL编码escape VS encodeURIComponent

// by redice 2010.05.19
// redice@163.com

escape和encodeURIComponent都可以进行URL编码,我还是喜欢用后者

(1)escape会将中文数据转为%u####格式,在服务端脚本获取参数时,不能自动进行解码,比较麻烦。

例如:

客户端提交 content=escape(中国),编码后的数据为 content=%u4E2D%u56FD ,

服务器端 $_REQUEST["content"] 得到的数据仍为%u4E2D%u56FD,要想得到文明,需要调用一下下面的utf8_urldecode函数。

<?php
  function utf8_urldecode($str) {
    $str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\1;",urldecode($str)); // 先将%u4E2D%u56FD转换为html转义格式&#x4E2D;&#x56FD;
    return html_entity_decode($str,null,UTF-8); // 将html转义字符转为明文
  }
?>

如下图所示:



(2)encodeURIComponent将中文转为%##格式,在服务端脚本获取参数时,会自动解码为明文,比较方便。

例如:

客户端提交 content=escape(中国),编码后的数据为 content=%E4%B8%AD%E5%9B%BD,

服务器端 $_REQUEST["content"]得到的数据即为明文的“中国”。


如下图所示:



附测试源代码:

File: Click to Download

在JSP中我也做过类似的测试,结果是一样的(JSP服务端也不会自动将%u####格式的数据解码为明文)。


[日志信息]

该日志于 2010-05-19 15:49 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “ajax URL编码escape VS encodeURIComponent” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部