I have a html text. I had encoded it in php using urlencode function. I want to decode that text in the javascript. when i use unescape function in javascript it replaces all the special characters back but sapce is replaced by '+'. how can i do it correctly so that space is replaced as space itself???
5 Answers
PHP rawUrlEncode() == JavaScript encodeURIComponent()
PHP rawUrlDecode() == JavaScript decodeURIComponent()
4 Comments
Amir Surnay
be ware that php urlencode is not compatible with javascript so u should use rawUrlEncode instead
Coisox
Working for me (((PHP))) $msg = array(); $msg['adds'] = rawUrlEncode($complexAddsWithHTMLMarkup); echo json_encode($msg); ......(((jQuery ajax dataType json))) decodeURIComponent(msg.adds);
Régis B.
Unfortunately, this answer is wrong for some characters. In php
rawurlencode(")") == "%29"
while in javascript encodeURIComponent(")") == ")"
.Try using rawurlencode instead - urlencode does some things differently for "historical" reasons.
See http://us.php.net/manual/en/function.urlencode.php for more information.
Comments
Parenthesis are exceptions to all of what is said in this post.
geek mode on :
false
PHP rawUrlEncode() !== JavaScript encodeURIComponent()
but true
PHP rawUrlEncode() == JavaScript encodeURIComponent()
In other words, there are many special characters that aren't treated as safe in rawurlencode when they are in encodeURIComponent.
Comments
Try this:
return decodeURIComponent((str + '').replace(/\+/g, '%20'));
1 Comment
gregmatys
I think it should be
replace(/\+/g, ' '))