Maison >interface Web >js tutoriel >Solution au problème des caractères chinois tronqués dans la méthode Post d'Ajax_jquery de JQuery
L'exemple de cet article décrit la solution au problème de la transmission de la poste chinoise dans JQuery, c'est-à-dire la méthode de traitement tronquée des paramètres chinois ajax et jquery.ajax après la transmission. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Question 1 :
Quand je travaillais sur un projet aujourd'hui, je devais utiliser Ajax. Lorsque j'utilisais GET pour transmettre les paramètres chinois, il me suffisait de définir l'encodage de la page sur GB2312 dans le programme en arrière-plan pour que le chinois puisse s'afficher normalement. , cette fois en raison du grand nombre d'éléments de formulaire, il ne convient pas pour être livré par la méthode GET et ne peut être transmis que par la méthode POST. Cependant, j'ai constaté que lorsque l'encodage est défini sur GB2312 dans le programme d'arrière-plan, le chinois. les caractères sont toujours affichés sous forme de caractères tronqués. Après quelques recherches, le problème a finalement été résolu.
Solution :
La méthode pour résoudre ce problème est très simple. Il vous suffit d'utiliser la fonction escape() lors du traitement des paramètres dans JS, et il n'est pas nécessaire d'utiliser unescape() pour décoder. Cette méthode convient pour POST et GET. méthodes. Code Ajax spécifique Je ne donnerai pas d'exemple ici, mais voici le code pour utiliser la fonction escape() pour traiter les paramètres :
Habituellement, lorsque nous traitons Ajax, nous obtiendrons directement la valeur du paramètre ici. Afin que les paramètres chinois ne soient pas tronqués, il nous suffit d'utiliser la fonction escape() pour traiter les paramètres.
Question 2 :
Lorsque la page du site Web n'est pas codée en utf-8, le chinois soumis par ajax sera tronqué.
La solution est la suivante :
Trouvez contentType:application/x-www-form-urlencoded dans jquery.js et remplacez-le par contentType:application/x-www-form-urlencoded;
Cause : Lorsque le jeu de caractères n'est pas spécifié, jquery utilise ISO-8859-1, ISO8859-1, généralement appelé Latin-1. Latin-1 comprend des caractères supplémentaires indispensables à l'écriture de toutes les langues d'Europe occidentale. L'ajax de jquery ne prend pas du tout en compte la question de l'internationalisation, mais utilise le jeu de caractères européen, donc des caractères tronqués apparaîtront lors de la transmission du chinois
J'utilise le framework Prototype depuis longtemps. Je l'ai utilisé sous .net-GB2312 ou jsp tutoriel-utf8, et je n'ai jamais rencontré de problèmes d'encodage de caractères. J'ai donc téléchargé les codes Prototype et JQuery et les ai ouverts pour en étudier les raisons.
La différence est que le contentType par défaut de JQuery : application/x-www-form-urlencoded
Le prototype est contentType:application/x-www-form-urlencoded charset=UTF-8
C'est la raison pour laquelle JQuery est tronqué Lorsque le jeu de caractères n'est pas spécifié, ISO-8859-1 est utilisé
ISO8859-1, généralement appelé Latin-1. Latin-1 comprend des caractères supplémentaires indispensables à l'écriture de toutes les langues d'Europe occidentale.
Ajax de JQuery n'a pas du tout pris en compte la question de l'internationalisation et a utilisé le jeu de caractères européen, ce qui a posé le problème des caractères tronqués lors de la transmission du chinois.
Notre UTF-8 peut résoudre ce problème.
En fin de compte, cela signifie que vous devez modifier le code JQuery et déclarer explicitement que contentType utilise le jeu de caractères utf-8, ce qui peut résoudre le problème de la transmission chinoise GB2312.
Il vous suffit de modifier le code JQuery et d'ajouter charset=UTF-8. De cette façon, il n'est pas nécessaire de changer web.config ou de changer l'encodage sur la page, et il n'est pas nécessaire d'utiliser escapec. (str) est ensuite décodé côté serveur. La façon dont cela est transmis en anglais est également transmise en chinois.
Voici un code simple à tester :
Code de la page test.html :
Page de traitement AjaxTest.aspx :
De plus, puisque le codage des caractères chinois par défaut d'Ajax est utf-8, le moyen le plus sûr est de s'assurer que le format de codage unifié des pages impliquées est utf-8.
J'espère que cet article sera utile à la programmation Ajax de chacun basée sur jQuery.