I am encoding the following string in javascript
encodeURI = "?qry=M & L";This give me an output
qry=m%20&%20lSo the "&" fromM & L is not getting encoded. What should i do?
6 Answers6
Does not encode characters that have special meaning (reserved characters) for a URI. The following example shows all the parts that a URI "scheme" can possibly contain.
encodeURI will not encode following special charcaters
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #let uri = "?qry=M & L"console.log(encodeURI(uri))So you can useencodeURIComponent ,this will encode all the characters except these
A-Z a-z 0-9 - _ . ! ~ * ' ( )let uri = "?qry=M & L"console.log(encodeURIComponent(uri))Comments
use encoreURIComponent instead to encode& as%26 as shown below. But it also encodes other special chars like? and=
let uri = "?qry=M & L"console.log(encodeURIComponent(uri))Comments
TheencodeURI() is not going to encode& as it will only encode certain set of special characters. to encode& you need to useencodeURIComponent.
encodeURI encodes everything except:
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #encodeURIComponent encodes everything except:
A-Z a-z 0-9 - _ . ! ~ * ' ( )console.log(encodeURIComponent("?qry=M & L"));Note the difference between the two methods when used to encode URLs.
const URL = "https://www.example.com/resource?query=10&id=20&name=hello%"console.log(encodeURI(URL));console.log(encodeURIComponent(URL));FromMDN:
Note that encodeURI by itself cannot form proper HTTP GET and POST requests, such as for XMLHTTPRequests, because "&", "+", and "=" are not encoded, which are treated as special characters in GET and POST requests. encodeURIComponent, however, does encode these characters
Comments
You should be using encodeURIComponent() instead of encodeURI()
Note: Usually encodeURIComponent() is used to encode a string (query string), that would be put to the URL. If you are using an existing URL to be encoded, then you may use encodeURI()
const uri = "?qry=M & L";console.log(encodeURIComponent(uri));Reference:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Comments
Reference here:url encodeYou have three options:
escape(str) will not encode: * @ - _ + . /encodeURI(uri) will not encode: ~!@#$&*()=:/,;?+'encodeURIComponent(uri) will not encode: ~!*()'Comments
Fromhere
The encodeURI() function is used to encode a URI.
This function encodes special characters, except: , / ? : @ & = + $ # (UseencodeURIComponent() to encode these characters).
And, also seethis answer
So, you'll probably have to do something like
var inputWithSplChars = "M & L";encodeURI = "?qry=" + encodeURIComponent(inputWithSplChars);Hope this helps! Cheers!
Comments
Explore related questions
See similar questions with these tags.



