2013-10-21 2 views
2

php를 사용하여 URL 문자열을 urlencoding하고 curl을 통해 phantomjs 스크립트로 전달하여 javascript를 사용하여 디코딩하려고합니다.자바 스크립트에서 URL 디코딩 문제가 발생했습니다.

나는으로 시작하고 다음를 urlencode() 함수에 의해 PHP 측에서

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

:로 전환됩니다

localhost:7788/hi there/how are you/ 

. phantomjs 측면에서

, 내가 가진 :

// 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'가 이것을해야한다고 본다.

+0

처음에 '+'기호가있는 이유는 무엇입니까? –

답변

4

공간 + 표시를 %20로 인코딩되지 않도록 당신은 PHP 측에서 rawurlencode() 대신 urlencode() 사용해야합니다, 그래서 자바 스크립트 decodeURIComponent() 잘을 디코딩 할 수있다.

+0

공백은'% 20'입니다. – Izkata

+0

감사합니다. – user61629

관련 문제