Il existe trois fonctions en JavaScript qui peuvent encoder des chaînes, à savoir : escape, encodeURI, encodeURIComponent et les trois fonctions de décodage correspondantes :
unescape,decodeURI,decodeURIComponent.
Ce qui suit est une brève introduction à leurs différences
1 fonction escape()
Définition et usage
La fonctionescape() encode une chaîne afin qu'elle puisse être lue sur tous les ordinateurs.
Grammaire
évasion(chaîne)
Description du paramètre
chaîne requise. La chaîne à échapper ou à encoder.
Valeur de retour
Une copie de la chaîne encodée. Certains de ces caractères sont remplacés par des séquences d'échappement hexadécimales.
Description
Cette méthode n'encode pas les lettres et les chiffres ASCII, ni les caractères de ponctuation ASCII suivants : -_ *
.
Tous les autres caractères seront remplacés par des séquences d'échappement.
2 fonctions encodeURI()
Définition et usage
La fonction encodeURI() encode une chaîne sous forme d'URI.
Grammaire
encodeURI(URIstring)
Description du paramètre
URIstring requis. Une chaîne contenant l'URI ou un autre texte à encoder.
Valeur de retour
Une copie de l'URIstring, avec certains caractères remplacés par des séquences d'échappement hexadécimales.
Description
Cette méthode n'encode pas les lettres et les chiffres ASCII, ni ces caractères de ponctuation ASCII : - _ .
Le but de cette méthode est d'encoder complètement l'URI, de sorte que la fonction encodeURI() n'échappera pas aux caractères de ponctuation ASCII suivants qui ont des significations particulières dans l'URI : ;/?:@&=+$ ,#
3 fonctions encodeURIComponent()
Définition et usage
La fonction encodeURIComponent() encode une chaîne en tant que composant URI.
Grammaire
encodeURIComponent(URIstring)
Description du paramètre
URIstring requis. Une chaîne contenant des composants URI ou un autre texte à encoder.
Valeur de retour
Une copie de l'URIstring, avec certains caractères remplacés par des séquences d'échappement hexadécimales.
Description
Cette méthode n'encode pas les lettres et les chiffres ASCII, ni ces caractères de ponctuation ASCII : - _ .
Les autres caractères (tels que :;/?:@&=+$,# les signes de ponctuation utilisés pour séparer les composants URI) sont remplacés par une ou plusieurs séquences d'échappement hexadécimales.
Conseils et remarques
Astuce : Veuillez noter que la fonction encodeURIComponent() diffère de la fonction encodeURI() en ce sens que la première suppose que ses arguments font partie d'un URI (comme un protocole, un nom d'hôte, un chemin ou une chaîne de requête). La fonction encodeURIComponent() échappe donc aux caractères de ponctuation utilisés pour séparer les parties de l'URI.
4 Récapitulatif :
Grâce à l'analyse des trois fonctions, nous pouvons savoir que : escape(), en plus des lettres ASCII, des chiffres et des symboles spécifiques, échappe toutes les chaînes transmises. Par conséquent, si vous souhaitez encoder l'URL, il est mieux vaut ne pas utiliser cette méthode. Et encodeURI() est utilisé pour coder l'intégralité de l'URI, car les caractères légaux de l'URI ne seront pas codés ni convertis. La méthode encodeURIComponent doit être la plus couramment utilisée lors de l'encodage d'un seul URIComponent (en référence aux paramètres de requête). Elle peut échapper aux caractères chinois et spéciaux dans les paramètres sans affecter l'intégralité de l'URL.
5 Exemple :
1 évasion()
<script type="text/javascript"> document.write(escape("http://www.w3school.com.cn/") + "<br />") document.write(escape("?!=()#%&")) </script>输出: 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>输出: http://www.w3school.com.cn/ http://www.w3school.com.cn/My%20first/ ,/?:@&=+$#
Encode l'intégralité de l'URL, tandis que les identifiants spécifiques à l'URL ne sont pas transcodés.
3 encodeURIComponent()
Exemple 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输出: http%3A%2F%2Fwww.w3school.com.cn http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F %2C%2F%3F%3A%40%26%3D%2B%24%23
Exemple 2 :
<script language="javascript">document.write(' <a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
Encodez les paramètres dans l'URL, car les paramètres sont également une URL. S'ils ne sont pas codés, cela affectera le saut de l'URL entière.