麻烦在javascript解码网址

时间:2013-10-21 15:31:07

标签: javascript php

我正在使用php对url字符串进行urlencoding,然后通过curl将其传递给phantomjs脚本,我尝试使用javascript对其进行解码。

我开始时:

localhost:7788/hi there/how are you/

变成了:

 localhost:7788/hi+there%2Fhow+are+you

在php端由urlencode()函数。

在幻影方面,我有:

// Create serever and listen port 
server.listen(port, function(request, response) {    

function urldecode(str) {
   return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}    


        // Print some information Just for debbug 
        console.log("We got some requset !!!"); 
        console.log("request method: ", request.method);  // request.method POST or GET 
        console.log("Get params: ", request.url); //     

           url= urldecode(request.url);

        //-- Split requested params
      var requestparams = request.url.split('/');    


      console.log(urldecode(requestparams[1]));
      console.log(urldecode(requestparams[2]));

控制台的输出是:

.....
request method:  GET
Get params:  /hi%2Bthere/how%2Bare%2Byou
hi+there
how+are+you

为什么“+”符号不会被空格替换?我正试图摆脱它们,它在我看来函数'urldecode'应该这样做。

1 个答案:

答案 0 :(得分:4)

您应该在PHP方面使用rawurlencode()而不是urlencode(),因此空格使用%20而不是+符号进行编码,因此javascript可以使用{解码它们{1}}。