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.
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); } });
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); } });
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 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('Content-Type:text/html;charset=utf-8');//设置响应头为utf-8编码 $name = $_POST["name"]; $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码 echo $name; ?>
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.
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 };
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 };
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['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents('php://input');//获取JSON数据 $data = json_decode($data,true);//将JSON数据解码为数组 $name = $data["name"]; $name = iconv("utf-8","gbk",$name);//将数据由utf-8编码转为gbk编码 echo $name; ?>
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.
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!