Maison  >  Article  >  interface Web  >  Parlez des différences et des applications des compétences encodeURI, encodeURIComponent et escape_javascript

Parlez des différences et des applications des compétences encodeURI, encodeURIComponent et escape_javascript

WBOY
WBOYoriginal
2016-05-16 15:30:061535parcourir

Tout d'abord, nous savons tous que ces trois éléments sont utilisés pour l'encodage. Parlons de encodeURI() et encodeURIComponent(). Ces deux éléments sont utilisés pour l'encodage et le décodage lors de la conversion des URL.

S'il y a un encodage, il y aura un décodage. Le décodage est decodeURI() et decodeURIComponent(). Leur utilisation est très simple. Il suffit d'amener le texte à transcoder dans les paramètres pour atteindre l'objectif

.

Par exemple :

encodeURI("Je suis le texte à encoder")
decodeURI("Je suis le texte à décoder")
encodeURIComponent("Je suis le texte à encoder")
decodeURIComponent("Je suis le texte à décoder")

La différence entre encodeURI() et encodeURIComponent() n'est en fait pas grande

La principale différence est :

encodeURI contient 82 caractères non codés : !, #, $, &, ', (,), *, ,,, -,.,/,:,;,=,?,@,_,~, 0-9, a-z, A-Z

encodeURIComponent a 71 caractères non codés : !, ', (,), *, -, ., _, ~, 0-9, a-z, A-Z

encodeURI est principalement utilisé lors de l'attribution d'une valeur directement à la barre d'adresse :

location.href=encodeURI("http://www.cnblogs.com/Tezml/");

Et encodeURIComponent est principalement utilisé pour les paramètres de requête de l'url :

location.href="http://www.cnblogs.com/Tezml/test.php?a=" encodeURIComponent("Je suis qui je suis" ​​
);

Et l'évasion, comparée aux deux ci-dessus, est différente

escape() est encodage, unescape() est en train de décoder

;

méthode d'échappement

Encoder les objets String pour qu'ils soient lisibles sur tous les ordinateurs,

évasion(charString)

Le paramètre charstring requis est n'importe quel objet String ou littéral à encoder.

Description

La méthode d'échappement renvoie une valeur de chaîne (format Unicode) contenant le contenu de charstring. Tous les espaces, signes de ponctuation, accents et autres caractères non-ASCII sont remplacés par l'encodage %xx,

Où xx est égal au nombre hexadécimal représentant le caractère. Par exemple, les espaces sont renvoyés sous la forme « ».

Les valeurs de caractères supérieures à 255 sont stockées au format %uxxxx.

Il y a 69 caractères qui ne sont pas codés par échappement : *, ,-,.,/,@,_,0-9,a-z,A-Z

Notez que la méthode d'échappement ne peut pas être utilisée pour coder des identifiants de ressources uniformes (URI). Il doit être codé à l’aide des méthodes encodeURI et encodeURIComponent.

La dernière démo sur l'encodage et le décodage

<!DOCTYPE html>
<html>
 <head>
 <title>Tezml_编码解码测试</title>
 <meta charset="utf-8">
 <meta name="author" content="Tezml" />
 <meta name="copyright" content="Tezml" />
 <meta name="description" content="Tezml" />
 <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<div id="wz1"></div>
<div id="wz2"></div>
<div id="wz3"></div>
<div id="wz4"></div>
<div id="wz5"></div>
<div id="wz6"></div>
<div id="wz7"></div>
<div id="wz8"></div>
<div id="wz9"></div>
<div id="wz10"></div>
<div id="wz11"></div>
<div id="wz12"></div>
</body>
<script type="text/javascript">
var chinese="请叫我中文"
var english="place tall me englash"
var Monster=":#&$/@"
$("#wz1").html(encodeURI(chinese))//编码 %E8%AF%B7%E5%8F%AB%E6%88%91%E4%B8%AD%E6%96%87
$("#wz2").html(decodeURI(chinese))//解码 请叫我中文
$("#wz3").html(encodeURI(english))//编码 place%20tall%20me%20englash
$("#wz4").html(decodeURI(english))//解码 place tall me englash
$("#wz5").html(encodeURIComponent(Monster))//编码 %3A%23%26%24%2F%40
$("#wz6").html(encodeURI(Monster))//编码 :#&$/@
$("#wz7").html(escape(chinese))//编码 %u8BF7%u53EB%u6211%u4E2D%u6587
$("#wz8").html(escape(english))//编码 place%20tall%20me%20englash
$("#wz9").html(escape(Monster))//编码 %3A%23%26%24/@
$("#wz10").html(unescape(chinese))//编码 请叫我中文
$("#wz11").html(unescape(english))//编码 place tall me englash
$("#wz12").html(unescape(Monster))//编码 :#&$/@
</script>
</html>

Résumé

escape() ne peut pas être utilisé directement pour l'encodage d'URL. Sa véritable fonction est de renvoyer la valeur d'encodage Unicode d'un caractère. Par exemple, le résultat renvoyé de "Spring Festival" est %u6625%u8282 et le codage escape() est incorrect. Il est principalement utilisé pour le codage des caractères chinois et son utilisation n'est plus recommandée.

encodeURI() est la fonction Javascript qui est réellement utilisée pour encoder les URL. L'adresse URL entière est codée, mais les symboles ayant une signification particulière "; / ? : @ & = $ , #" ne sont pas codés. La fonction de décodage correspondante est : decodeURI().

encodeURIComponent() peut encoder les caractères spéciaux "; / ? : @ & = $ , #". La fonction de décodage correspondante est decodeURIComponent().

Si vous souhaitez transmettre l'URL avec l'esperluette, utilisez encodeURIComponent()

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