Heim > Artikel > Web-Frontend > Lösung für das Problem verstümmelter chinesischer Zeichen in der Post-Methode von Ajax_jquery von JQuery
Das Beispiel in diesem Artikel beschreibt die Lösung des Problems der chinesischen Postübertragung in JQuery, dh die verstümmelte Verarbeitungsmethode für verstümmelte Ajax- und jquery.ajax-chinesische Parameter nach der Übertragung. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
Frage 1:
Als ich heute an einem Projekt arbeitete, musste ich Ajax verwenden, um chinesische Parameter zu übergeben, ich musste jedoch nur die Seitenkodierung im Hintergrundprogramm auf GB2312 einstellen, damit Chinesisch normal angezeigt werden konnte Diesmal ist es aufgrund der großen Anzahl von Formularelementen nicht für die Übermittlung per GET-Methode geeignet und kann nur per POST-Methode übertragen werden. Ich habe jedoch festgestellt, dass die Codierung im Hintergrundprogramm auf GB2312 eingestellt ist Zeichen werden immer noch als verstümmelte Zeichen angezeigt. Nach einiger Recherche wurde das Problem endlich gelöst.
Lösung:
Die Methode zur Lösung dieses Problems ist sehr einfach. Sie müssen nur die Funktion escape() verwenden, wenn Sie Parameter in JS verarbeiten, und es ist nicht erforderlich, unescape() zum Dekodieren zu verwenden Methoden. Spezifischer Ajax-Code. Ich werde hier kein Beispiel geben, aber hier ist der Code für die Verwendung der Escape()-Funktion zum Verarbeiten von Parametern:
Normalerweise erhalten wir bei der Verarbeitung von Ajax den Parameterwert hier direkt. Damit die chinesischen Parameter nicht verstümmelt werden, müssen wir nur die Funktion escape() verwenden, um die Parameter zu verarbeiten.
Frage 2:
Wenn die Website-Seite nicht utf-8-codiert ist, werden die von Ajax übermittelten chinesischen Texte verstümmelt.
Die Lösung lautet wie folgt:
Suchen Sie contentType:application/x-www-form-urlencoded in jquery.js und ändern Sie es in contentType:application/x-www-form-urlencoded=UTF-8.
Ursache: Wenn kein Zeichensatz angegeben ist, verwendet JQuery ISO-8859-1, ISO8859-1, normalerweise Latin-1 genannt. Latin-1 enthält zusätzliche Zeichen, die zum Schreiben aller westeuropäischen Sprachen unverzichtbar sind. Der Ajax von jquery berücksichtigt das Problem der Internationalisierung überhaupt nicht, sondern verwendet den europäischen Zeichensatz, sodass bei der Übertragung von Chinesisch
verstümmelte Zeichen angezeigt werdenIch verwende das Prototype-Framework schon vor langer Zeit. Ich habe es unter .net-GB2312 oder JSP-Tutorial-utf8 verwendet und bin nie auf Probleme mit der Zeichenkodierung gestoßen. Also habe ich sowohl den Prototype- als auch den JQuery-Code heruntergeladen und sie geöffnet, um die Gründe zu untersuchen.
Der Unterschied besteht darin, dass der Standard-Inhaltstyp von JQuery lautet: application/x-www-form-urlencoded
Der Prototyp ist contentType:application/x-www-form-urlencoded;
Aus diesem Grund ist JQuery verstümmelt. Wenn der Zeichensatz nicht angegeben ist, wird ISO-8859-1 verwendet.ISO8859-1, normalerweise Latin-1 genannt. Latin-1 enthält zusätzliche Zeichen, die für das Schreiben aller westeuropäischen Sprachen unverzichtbar sind.
JQuerys Ajax berücksichtigte das Problem der Internationalisierung überhaupt nicht und verwendete den europäischen Zeichensatz, was das Problem verstümmelter Zeichen bei der Übertragung von Chinesisch verursachte.
Unser UTF-8 kann dieses Problem lösen.
Letztendlich bedeutet dies, dass Sie den JQuery-Code ändern und explizit deklarieren müssen, dass der ContentType den UTF-8-Zeichensatz verwendet, wodurch das Problem der chinesischen GB2312-Übertragung gelöst werden kann.
Sie müssen lediglich den JQuery-Code ändern und charset=UTF-8 hinzufügen. Auf diese Weise ist es nicht erforderlich, web.config zu ändern oder die Codierung auf der Seite zu ändern, und es ist nicht erforderlich, escapc zu verwenden. (str) wird dann serverseitig dekodiert. So wie es auf Englisch vermittelt wird, wird es auch auf Chinesisch vermittelt.
Hier ist ein einfacher Code zum Testen:
test.html-Seitencode: