我正在使用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'应该这样做。
答案 0 :(得分:4)
您应该在PHP方面使用rawurlencode()
而不是urlencode()
,因此空格使用%20
而不是+
符号进行编码,因此javascript可以使用{解码它们{1}}。