28

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???

1
  • Checkout my answer here. Hope it helps. Jan 10, 2019 at 3:24

5 Answers 5

53

PHP rawUrlEncode() == JavaScript encodeURIComponent()

PHP rawUrlDecode() == JavaScript decodeURIComponent()

4
  • 2
    be ware that php urlencode is not compatible with javascript so u should use rawUrlEncode instead 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
    Aug 1, 2014 at 11:41
  • 4
    Unfortunately, this answer is wrong for some characters. In php rawurlencode(")") == "%29" while in javascript encodeURIComponent(")") == ")".
    – Régis B.
    Mar 20, 2017 at 18:39
  • 2
    @RégisB. To comply to RFC 3986 there is a fix on MDN. To the bottom there is a function called fixedEncodeURIComponent
    – Michel
    Sep 29, 2018 at 7:12
16

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.

0
4

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.

3

Try this:

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

Source: http://phpjs.org/functions/urldecode:572

1
  • 2
    I think it should be replace(/\+/g, ' '))
    – gregmatys
    Sep 27, 2013 at 12:46
0

PHP rawUrlEncode with JS unescape (deprecated but working)

For me decodeURIComponent throw errors sometimes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.