Are there any equivalent Javascript functions for Python's urllib.quote()
and urllib.unquote()
?
The closest I've come across are escape()
, encodeURI()
, and encodeURIComponent()
(and their corresponding un-encoding functions), but they don't encode/decode the same set of special characters as far as I can tell.
Thanks,
Cameron
Try a regex. Something like this:
That will replace any character above ordinal 255 with its corresponding %HEX representation.
The requests library is a bit more popular if you don't mind the extra dependency
Python:
urllib.quote
Javascript:
unescape
I haven't done extensive testing but for my purposes it works most of the time. I guess you have some specific characters that don't work. Maybe if I use some Asian text or something it will break :)
This came up when I googled so I put this in for all the others, if not specifically for the original question.
For the record:
OK, I think I'm going to go with a hybrid custom set of functions:
Encode: Use encodeURIComponent(), then put slashes back in.
Decode: Decode any %hex values found.
Here's a more complete variant of what I ended up using (it handles Unicode properly, too):
Note that if you don't need "safe" characters when encoding (
'/'
by default in Python), then you can just use the built-inencodeURIComponent()
anddecodeURIComponent()
functions directly.Also, if there are Unicode characters (i.e. characters with codepoint >= 128) in the string, then to maintain compatibility with JavaScript's
encodeURIComponent()
, the Pythonquote_url()
would have to be:And
unquote_url()
would be: