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()
-
2be ware that php urlencode is not compatible with javascript so u should use rawUrlEncode insteadAmir Surnay– Amir Surnay10/28/2013 13:42:15Commented Oct 28, 2013 at 13:42
-
Working for me (((PHP))) $msg = array(); $msg['adds'] = rawUrlEncode($complexAddsWithHTMLMarkup); echo json_encode($msg); ......(((jQuery ajax dataType json))) decodeURIComponent(msg.adds);Coisox– Coisox08/01/2014 11:41:51Commented Aug 1, 2014 at 11:41
-
4Unfortunately, this answer is wrong for some characters. In php
rawurlencode(")") == "%29"
while in javascriptencodeURIComponent(")") == ")"
.Régis B.– Régis B.03/20/2017 18:39:19Commented Mar 20, 2017 at 18:39 -
2
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.
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.
Try this:
return decodeURIComponent((str + '').replace(/\+/g, '%20'));
-
2I think it should be
replace(/\+/g, ' '))
gregmatys– gregmatys09/27/2013 12:46:12Commented Sep 27, 2013 at 12:46
PHP rawUrlEncode
with JS unescape
(deprecated but working)
For me decodeURIComponent
throw errors sometimes.