Maison  >  Article  >  interface Web  >  Comment javascript implémente-t-il le transcodage et le décodage d'URL ?

Comment javascript implémente-t-il le transcodage et le décodage d'URL ?

不言
不言original
2018-09-14 17:48:046264parcourir

Ce que cet article vous apporte, c'est comment JavaScript implémente le transcodage et le décodage d'URL ? Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1. escape et unescape

escape() ne peut pas être utilisé directement pour l'encodage d'URL. Sa véritable fonction est de renvoyer la valeur codée Unicode d'un caractère.

Utilisation du jeu de caractères Unicode pour encoder la chaîne spécifiée sauf 0-255. Tous les espaces, signes de ponctuation, caractères spéciaux et autres caractères non-ASCII associés seront convertis en codage de caractères au format %xx (xx est égal au nombre hexadécimal du codage de caractères dans la table des jeux de caractères). Par exemple, l'encodage correspondant au caractère espace est %20.
Escape n'encode pas 69 caractères : *, +, -, ., /, @, _, 0-9, a-z, A-Z.

La fonction escape() est utilisée pour encoder des chaînes en js et n'est pas couramment utilisée.

Encodage :

escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')

Résultats : "http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1"

escape ("Zhang")

Résultat : "%u5F20"

Décodage :

unescape("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

Résultat : "http://www.baidu.com?name=zhang @xiao@jie&order=1"

unescape("%u5F20")

Résultat : "张"

2. encodeURI et decodeURI

mettre le URI La chaîne est convertie en diverses chaînes d'échappement à l'aide du format de codage UTF-8.
Il y a 82 caractères non codés dans encodeURI : !, #, $, &, ', (,), *, +,,, -,., /, :,;, =,?, @,_,~ , 0-9, a-z, A-Z

encodeURI() est utilisé pour encoder l'url entière

Codage :

encodeURI('http://www.baidu.com?name=zhang@xiao@jie&order=1')

Résultat : "http://www. baidu. com?name=zhang@xiao@jie&order=1"

Décodage :

decodeURI("http%3A//www.baidu.com%3Fname%3Dzhang@xiao@jie%26order%3D1")

Résultat : "http%3A//www.baidu.com%3Fname%3Dzhang@xiao @jie %26order%3D1"

3. La différence entre encodeURIComponent et decodeURIComponent

et encodeURI() est qu'il est utilisé pour encoder des composants individuels de l'URL plutôt que d'encoder l'URL entière. .

Par conséquent, " ; /? : @ & = + $ , #", ces symboles qui ne sont pas codés dans encodeURI() seront tous codés dans encodeURIComponent(). Quant à la méthode de codage spécifique, les deux sont identiques. Convertissez la chaîne URI au format d'échappement en utilisant le format de codage UTF-8 String.

encodeURIComponent() est utilisé pour transmettre des paramètres. Les paramètres contenant des caractères spéciaux peuvent provoquer des interruptions

Encodage :

encodeURIComponent('http://www.baidu.com?name=zhang@xiao@jie&order=1')

Résultat : "http%. 3A%2F%2Fwww. .baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1"

Décodage :

decodeURIComponent("http%3A%2F%2Fwww.baidu.com%3Fname%3Dzhang%40xiao%40jie%26order%3D1")

Résultat : "http://www .baidu.com? name=zhang@xiao@jie&order=1"

Résumé :

escape() ne peut pas être utilisé directement pour l'encodage d'URL. Sa véritable fonction est de renvoyer l'encodage Unicode d'un caractère. Valeur. Par exemple, le résultat renvoyé de "Spring Festival" est %u6625%u8282, escape() n'encode pas "+".

est principalement utilisé pour l'encodage des caractères chinois et l'utilisation de

encodeURI( n'est plus recommandé. ) est la fonction en Javascript qui est réellement utilisée pour encoder l'URL

encode l'intégralité de l'adresse URL, mais la fonction de décodage correspondante n'encode pas les symboles de signification particulière "; / ? : @ & = + $ , #". Oui : decodeURI().

encodeURIComponent()

peut encoder "; / : @ & = + $, #". La fonction de décodage correspondante est
<.>Je souhaite transmettre l'URL avec une esperluette, alors utilisez encodeURIComponent()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn