There are three functions in JavaScript that can encode strings, namely: escape, encodeURI, encodeURI, and encodeURIComponent. The corresponding three decoding functions: unescape, decodeURI, and decodeURIComponent.
Here is a brief introduction to their differences:
1 escape() function
Definition and usage
The escape() function encodes a string so that the string can be read on all computers.
grammar
escape(string)
Parameter description
string Required. The string to be escaped or encoded.
Return value
A copy of the encoded string. Some of these characters are replaced with hexadecimal escape sequences.
illustrate
This method does not encode ASCII letters and numbers, nor does the following ASCII punctuation marks: - _ . ! ~ * ' ( ) . All other characters will be replaced by escaped sequences.
2 encodeURI() function
Definition and usage
The encodeURI() function can encode strings as URIs.
grammar
encodeURI(URIstring)
Parameter description
URIstring Required. A string containing a URI or other text to be encoded.
Return value
A copy of URIstring, some of which are replaced by a hexadecimal escape sequence.
illustrate
This method does not encode ASCII letters and numbers, nor does it encode these ASCII punctuation marks: - _ . ! ~ * ' ( ) .
The purpose of this method is to fully encode the URI, so the encodeURI() function will not escape the following ASCII punctuation marks with special meaning in the URI: ;/?:@&=+$,#
3 encodeURIComponent() function
Definition and usage
The encodeURIComponent() function can encode strings as URI components.
grammar
encodeURIComponent(URIstring)
Parameter description
URIstring Required. A string containing a URI component or other text to be encoded.
Return value
A copy of URIstring, some of which are replaced by a hexadecimal escape sequence.
illustrate
This method does not encode ASCII letters and numbers, nor does it encode these ASCII punctuation marks: - _ . ! ~ * ' ( ) .
Other characters (such as: ;/?:@&=+$,# These punctuation marks used to separate URI components) are replaced by one or more hexadecimal escape sequences.
Tips and comments
Tip: Note the difference between the encodeURIComponent() function and the encodeURI() function. The former assumes that its parameters are part of the URI (such as protocol, hostname, path, or query string). Therefore, the encodeURIComponent() function will escape the punctuation marks used to separate the individual parts of the URI.
4 Summary:
Through the analysis of the three functions, we can know that escape() escapes all the passed strings except ASCII letters, numbers and specific symbols. Therefore, if you want to encode the URL, it is best not to use this method. encodeURI() is used to encode the entire URI because none of the legal characters in the URI will be encoded and converted. The encodeURIComponent method should be the most commonly used when encoding a single URIComponent (referring to the request parameter). It can escape Chinese and special characters in the parameters without affecting the entire URL.
5 examples:
1 escape()
<script type="text/javascript">document.write(escape("http://www.w3school.com.cn/") + "<br />")document.write(escape("?!=()#%&"))</script>Output:
http%3A//www.w3school.com.cn%3F%21%3D%28%29%23%25%26
2 encodeURI()
<script type="text/javascript">document.write(encodeURI("http://www.w3school.com.cn/")+ "<br />")document.write(encodeURI("http://www.w3school.com.cn/My first/"))document.write(encodeURI(",/?:@&=+$#"))</script>Output:
http://www.w3school.com.cn/http://www.w3school.com.cn/My%20first/,/?:@&=+$#
The entire URL is encoded, and the specific identifier of the URL is not transcoded.
3 encodeURIComponent()
Example 1:
<script type="text/javascript">document.write(encodeURIComponent("http://www.w3school.com.cn/"))document.write("<br />")document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))document.write("<br />")document.write(encodeURIComponent(",/?:@&=+$#"))</script>Output:
http%3A%2F%2Fwww.w3school.com.cnhttp%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F%2C%2F%3F%3A%40%26%3D%2B%24%23
Example 2:
<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent(" rel="external nofollow" http://cang.baidu.com/bruce42")+'">Exit</a>');</script>Encode the parameters in the URL, because the parameters are also a URL, if not encoded, it will affect the jump of the entire URL.