Heim > Backend-Entwicklung > PHP-Problem > Was tun, wenn PHP Ajax verstümmelte chinesische Zeichen überträgt?

Was tun, wenn PHP Ajax verstümmelte chinesische Zeichen überträgt?

PHPz
Freigeben: 2023-04-19 10:38:09
Original
852 Leute haben es durchsucht

Bei der Entwicklung mit PHP in Kombination mit AJAX kann es zu einem häufigen Problem kommen, nämlich dass bei der chinesischen Übertragung verstümmelte Zeichen erscheinen. Dies liegt daran, dass die von PHP verwendete Standardcodierungsmethode ISO-8859-1 ist, während die von AJAX verwendete Standardcodierungsmethode UTF-8 ist. Die beiden sind nicht kompatibel, was zu verstümmelten Zeichen während des Übertragungsprozesses führt. In diesem Artikel erfahren Sie, wie Sie das Problem der von PHP und AJAX übertragenen verstümmelten chinesischen Zeichen lösen können.

1. AJAX-Anfragen senden verstümmelte Zeichen

AJAX ist eine Lösung für die asynchrone Interaktion zwischen dem Front-End und dem Back-End. Über AJAX können Sie Anfragen an das Back-End senden, ohne die Seite zu aktualisieren, und Sie können von zurückgesendete Daten empfangen das hintere Ende. Bei der Verwendung von AJAX für die chinesische Übertragung kann es zu verstümmelten Zeichen kommen.

Zum Beispiel die folgende einfache AJAX-Anfrage:

$.ajax({
    url: "test.php",
    type: "POST",
    data: { name: "张三", age: 20 },
    success: function (result) {
        console.log(result);
    }
});
Nach dem Login kopieren

Im obigen Code haben wir eine POST-Anfrage an test.php gesendet und Daten mit „Name“ als „Zhang San“ und „Alter“ als 20 übergeben. Wenn wir diesen Anforderungsparameter jedoch im Backend erhalten, werden verstümmelte chinesische Zeichen angezeigt.

Die Lösung für dieses Problem ist sehr einfach: Konvertieren Sie einfach die Daten in die UTF-8-Kodierung, bevor Sie die AJAX-Anfrage senden. Ändern Sie den obigen Code wie folgt:

$.ajax({
    url: "test.php",
    type: "POST",
    data: { name: encodeURIComponent("张三"), age: 20 },
    success: function (result) {
        console.log(result);
    }
});
Nach dem Login kopieren

Im obigen Code verwenden wir encodeURIComponent, um „Name“ zu kodieren und Chinesisch in UTF-8-Kodierung zu konvertieren, um verstümmelte chinesische Zeichen zu vermeiden.

2. PHP empfängt UTF-8-codierte Daten

Im vorherigen Kapitel haben wir vorgestellt, wie man eine Codierungskonvertierung in AJAX-Anfragen durchführt. Wie erhält man also diese UTF-8-codierten Daten im Back-End-PHP?

In PHP können wir die Parameter der POST-Anfrage über $_POST abrufen. Allerdings ist die von PHP standardmäßig verwendete Kodierungsmethode ISO-8859-1, die nicht mit der UTF-8-Kodierung kompatibel ist, sodass wir beim Abrufen von Daten eine entsprechende Kodierungskonvertierung durchführen müssen.

Ändern Sie die Datei test.php wie folgt:

<?php
    header(&#39;Content-Type:text/html;charset=utf-8&#39;);//设置响应头为utf-8编码
    $name = $_POST["name"];
    $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码
    echo $name;
?>
Nach dem Login kopieren

Im obigen Code setzen wir zuerst den Antwortheader auf UTF-8-Codierung, erhalten dann die Parameter über $_POST und verwenden schließlich die Funktion iconv, um die UTF- zu konvertieren. 8 codierte Parameter GBK codieren, um verstümmelte chinesische Zeichen zu vermeiden.

3. JSON überträgt verstümmelte chinesische Zeichen

In tatsächlichen Anwendungen übertragen wir Daten normalerweise im JSON-Format. Bei der Übertragung von Chinesisch über JSON müssen Sie auch auf Kodierungsprobleme achten.

Zum Beispiel die folgenden einfachen JSON-Daten:

var data = {
    name: "张三",
    age: 20
};
Nach dem Login kopieren

Im obigen Code definieren wir JSON-Daten, die die Attribute „Name“ und „Alter“ enthalten, wobei „Name“ das chinesische „Zhang San“ ist.

Bei der Übergabe von JSON-Daten an das Back-End-PHP müssen die Daten auch codiert und konvertiert werden. Ändern Sie den obigen Code wie folgt:

var data = {
    name: encodeURIComponent("张三"),
    age: 20
};
Nach dem Login kopieren

Im obigen Code verwenden wir encodeURIComponent, um „Name“ zu kodieren und Chinesisch in UTF-8-Kodierung zu konvertieren, um verstümmelte chinesische Zeichen zu vermeiden.

Im Back-End-PHP ist auch eine entsprechende Codierungskonvertierung erforderlich. Ändern Sie die Datei test.php wie folgt:

<?php
    $data = isset($GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]) ? $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;] : file_get_contents(&#39;php://input&#39;);//获取JSON数据
    $data = json_decode($data,true);//将JSON数据解码为数组
    $name = $data["name"];
    $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码
    echo $name;
?>
Nach dem Login kopieren

Im obigen Code erhalten wir zuerst die JSON-Daten über $GLOBALS['HTTP_RAW_POST_DATA'] oder file_get_contents('php://input') und dekodieren dann die JSON-Daten über json_decode-Array und verwenden Sie schließlich die Funktion iconv, um die UTF-8-codierten Parameter in GBK-Codierung zu konvertieren, um verstümmelte chinesische Zeichen zu vermeiden.

4. Zusammenfassung

Bei der Entwicklung mit PHP in Kombination mit AJAX kann es bei der chinesischen Übertragung zu verstümmelten Zeichen kommen. Um dieses Problem zu lösen, müssen wir die Daten kodieren, um sie mit der Standardkodierung von PHP kompatibel zu machen. Wenn Sie JSON für die Datenübertragung verwenden, müssen Sie auch auf Kodierungsprobleme achten. Ich hoffe, dass die Einführung dieses Artikels den Lesern helfen kann, das Problem der von PHP und AJAX übertragenen verstümmelten chinesischen Zeichen zu lösen.

Das obige ist der detaillierte Inhalt vonWas tun, wenn PHP Ajax verstümmelte chinesische Zeichen überträgt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage