Maison  >  Article  >  interface Web  >  Comment éviter les caractères tronqués dans encodeURI(url) en JS ?

Comment éviter les caractères tronqués dans encodeURI(url) en JS ?

php中世界最好的语言
php中世界最好的语言original
2018-03-09 10:52:422590parcourir

Cette fois, je vais vous montrer comment encoderURI(url) en JS sans caractères tronqués ? , quelles sont les précautions lors de l'utilisation de encodeURI(url) en JS, ce qui suit est un cas pratique, jetons un coup d'œil.

De manière générale, envoyez encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
Lors de la réception, directement String paramValue = request.getParameter(paramName); // Le conteneur décode automatiquement.

Nous savons que encodeURIComponent est compilé en utilisant les règles d'encodage UTF-8.
Si le conteneur est également décodé selon UTF-8 lorsque request.getParameter(paramName), c'est correct. pas besoin d'effectuer un deuxième encodeURIComponent(...)

sur le client

Si le conteneur ne décode pas request.getParameter(paramName) selon UTF-8, il n'y aura qu'un seul résultat, qui est du code tronqué !
L'encodage utilisé par le conteneur pour décoder dépend de request.setCharacterEncoding(***) ou de la configuration du programme serveur.

Si vous êtes dans un programme jsp, vous pouvez request.setCharacterEncoding ("UTF-8") et modifiez-le. La configuration du serveur permet au conteneur d'utiliser UTF-8 lors du décodage des paramètres soumis par GET.

Le client n'a pas besoin d'encoder deux fois avant de le soumettre lors de la réception, uniquement. doit directement request.getParameter(paramName)

Pourquoi certaines personnes sur Internet proposent-elles d'encoder la chaîne deux fois côté client
Si le projet en a besoin, vous ne pouvez pas ? spécifiez les règles d'encodage que le conteneur utilise pour décoder les paramètres soumis, par exemple : Lorsque vous devez recevoir le contenu des paramètres de différentes pages sans encodage local. (Ou peut-être que le développeur est confus par ce truc quelque peu compliqué et ne sait pas comment effectuer correctement le travail de réception des paramètres)
À l'heure actuelle, l'encodage secondaire des paramètres sur le client peut être efficace. Évitez le problème délicat de " validation de caractères multi-octets".
En raison du premier encodage, le contenu de vos paramètres ne contient pas de caractères multi-octets et devient une pure chaîne Ascii. (Ici, le résultat de la première compilation s'appelle [STR_ENC1]. [STR_ENC1] ne contient pas de caractères multi-octets)
Après l'avoir recompilé, soumettez-le et le conteneur le résoudra automatiquement une fois lors de la réception (le conteneur résolvez-le automatiquement Cette fois, peu importe que vous appuyiez sur GBK, UTF-8 ou ISO-8859-1, vous pouvez obtenir [STR_ENC1] correctement)
Ensuite, implémentez à nouveau decodeURIComponent dans le programme (java.net est généralement utilisé dans Java .URLDecoder(***, "UTF-8")) pour obtenir la valeur originale du paramètre que vous souhaitez soumettre.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention au site Web chinois php Autres articles liés !

Lecture connexe :

Une brève introduction au principe de clearfix en CSS

Propriétés communes de CSS1 et CSS2

Comment utiliser CSS3 pour créer une boîte de connexion

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