Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn meine PHP-Ajax-Anwendung verstümmelte Zeichen zurückgibt?

Was soll ich tun, wenn meine PHP-Ajax-Anwendung verstümmelte Zeichen zurückgibt?

coldplay.xixi
coldplay.xixiOriginal
2020-07-11 14:49:572040Durchsuche

Lösung für den verstümmelten Code, der von der PHP-Ajax-Anwendung zurückgegeben wird: 1. Konvertieren Sie die empfangenen Daten zurück in GBK, der Code ist [iconv(utf-8,'gb2312'$_POST[Data])]; Verwenden Sie JSON zum Übertragen. Der Code lautet [$json_string=JSON($data)].

Was soll ich tun, wenn meine PHP-Ajax-Anwendung verstümmelte Zeichen zurückgibt?

Lösung für PHP-Anwendungs-Ajax, das verstümmelte Zeichen zurückgibt:

1. Daten vom Frontend übermitteln JS zu Im Hintergrund

AJAX-Daten, unabhängig davon, ob sie direkt das zugrunde liegende xmlHttprequest verwenden oder jQuerys Ajax für die Datenübertragung verwenden, verwendet Ajax utf-8 zum Codieren und Senden!

Wenn unsere Seite UTF-8 ist, gibt es kein Problem!

Wenn es sich um GB2312 handelt, wird GBK in den Hintergrund umgewandelt! Zu diesem Zeitpunkt ist das, was direkt im Hintergrund empfangen wird, verstümmelt!

Lösung: Wenn die Hintergrundsprache PHP ist

iconv('utf-8','gb2312',$_POST['Data']);

Das Prinzip ist sehr einfach: Direkt im Hintergrund Der Empfang ist UTF-8, und die Seiten sind alle GBK, dann konvertieren Sie einfach die empfangenen Daten zurück in GBK!

Dann müssen Sie sie einfach in der Datenbank speichern! Seien Sie normale chinesische Zeichen!

2. Die Hintergrundseite liest, dass die Daten in der Datenbank chinesische Zeichen enthalten, und gibt sie dann an das JS-Frontend zurück

Das PHP Seite liest normale chinesische Zeichen aus der Datenbank und möchte sie über AJAX zurücksenden~

Wenn es zurückgegeben wird, werden die Daten ohne Verarbeitung direkt in Form einer Zeichenfolge zurückgesendet! Ja! Chinesisch zeigt alles normal auf der Titelseite an!

Aber wir müssen generell die Hintergrunddaten verpacken! Sonst sind die an der Rezeption empfangenen Daten schwierig zu verarbeiten!

Wenn ja ist PHP! Dann verwenden wir jetzt im Allgemeinen JSON für die Übertragung! Auf diese Weise lassen sich die an das Front-End-JS übergebenen Daten sehr einfach entpacken und bedienen! Das Problem tritt auf!

Beim Konvertieren von JSON werden Sie feststellen, dass das aus der Datenbank gelesene Chinesisch NULL oder andere ungewöhnliche Situationen anzeigt. Dies liegt daran, dass JSON nur der Codierung entgeht!

Wie auch immer, bei der Konvertierung von JSON ins Chinesische erscheinen verstümmelte Zeichen~~

Die Lösung lautet wie folgt:

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
 {
     static $recursive_counter = 0;
     if (++$recursive_counter > 1000) {
         die('possible deep recursion attack');
     }
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             arrayRecursive($array[$key], $function, $apply_to_keys_also);
         } else {
             $array[$key] = $function($value);
         }
   
         if ($apply_to_keys_also && is_string($key)) {
             $new_key = $function($key);
             if ($new_key != $key) {
                 $array[$new_key] = $array[$key];
                 unset($array[$key]);
             }
         }
     }
     $recursive_counter--;
 }
 function JSON($array) {
     arrayRecursive($array, 'urlencode', true);
     $json = json_encode($array);
     return urldecode($json);
 }
$json_string=JSON($data);
//$obj = json_decode($json_string);
print_r($json_string);

Nach diesen Vorgängen werden Sie feststellen, dass die chinesischen Zeichen gelesen werden Aus der Datenbank werden im Hintergrund PHP erfolgreich in das JSON-Format und Chinesisch konvertiert. Es zeigt, dass alles normal ist!

Natürlich sind die Daten, die die Rezeption zu diesem Zeitpunkt erhält, im JSON-Format und auch chinesische Schriftzeichen normal!

Verwandte Lernempfehlungen:
PHP-Programmierung vom Einstieg bis zur Meisterschaft

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn meine PHP-Ajax-Anwendung verstümmelte Zeichen zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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