Deux méthodes couramment utilisées pour résoudre les caractères chinois tronqués AJAX
1. EncodeURI côté client (utf-8 peut également être omis, valeur par défaut) et convertissez l'encodage iso-8859-1 en encodage utf-8 côté serveur
2. EncodeURI est exécuté deux fois côté client et converti une fois côté serveur.
La raison pour laquelle la deuxième méthode peut résoudre le problème :
Après deux conversions, effectuez le premier décodage dans la première méthode getparameter, car la solution est en anglais (le résultat après le premier encodage), il n'y aura pas de problème la deuxième fois, utilisez la méthode de décodage d'URLDecoder, ce problème peut donc être résolu. être résolu normalement. Il convient de noter que le format de décodage doit être spécifié comme « utf-8 » dans la méthode de décodage. De nombreuses plates-formes chinoises n'utilisent pas utf-8 (je suppose que c'est gb2312), donc la conversion par défaut du décodage n'est pas nécessairement utf-8.
La raison pour laquelle le client est codé deux fois et décodé une seule fois sur le serveur est due à Tomcat. Afin de rendre la programmation plus pratique pour les programmeurs (obtenir et publier utilisent le même code), Tomcat décodera automatiquement l'encodage de la publication, il y aura donc une instruction de décodage manuscrite de moins côté serveur. La raison pour laquelle nous devons effectuer à nouveau l'encodage et le décodage est que l'opération de décodage automatique de Tomcat n'est pas nécessairement décodée en fonction de l'encodage souhaité, mais les codes décodés pour l'anglais et les autres caractères sont les mêmes quelle que soit la plate-forme sur laquelle ils se trouvent, il se peut donc que Tomcat interprète automatiquement le résultat du premier encodage, puis interprète manuellement le code encodeURI une fois pour obtenir le format dont vous avez besoin.
Supplément : Maintenant, j'ai à nouveau observé le comportement du navigateur, et je pense que ce n'est pas la faute de Tomcat, car le navigateur affiche le chinois au lieu du contenu codé. Je suis actuellement confus au sujet de ces problèmes d'encodage, j'espère le savoir. Les amis ayant des connaissances dans ce domaine sont invités à me donner des conseils !
Résoudre le problème de cache IE
Vous ajoutez un horodatage et souhaitez vérifier ?
Résoudre les problèmes de l'agence
Tu veux ? Convertir en $
Exemple de code :
Copiez le code comme suit :
fonction vérifier() {
//Méthode 1 pour résoudre le problème des caractères chinois tronqués. Les données envoyées du côté de la page sont codées en tant qu'encodeURI et le segment du serveur utilise new String(old.getBytes("iso8859-1"),"UTF-8" );
//Méthode 2 pour résoudre le problème du chinois tronqué, les données envoyées du côté de la page sont codées deux fois et le segment du serveur utilise URLDecoder.decode(old, "UTF-8")
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
url = convertirURL(url);
$.get(url,null,fonction(données){
$("#result").html(données);
});
}
//Ajouter un horodatage à l'adresse URL pour tromper le navigateur et ne pas lire le cache
fonction convertURL(url) {
//Obtenir l'horodatage
var timstamp = (new Date()).valueOf();
//Splice les informations d'horodatage dans l'URL
//url = "Serveur AJAX"
if (url.indexOf("?") >= 0) {
url = url + "&t=" + horodatage ;
} autre {
url = url + "?t=" + horodatage ;
}
URL de retour ;
}