Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn PHP JSON chinesische verstümmelte Zeichen dekodiert?

Was tun, wenn PHP JSON chinesische verstümmelte Zeichen dekodiert?

藏色散人
藏色散人Original
2020-07-18 10:22:414946Durchsuche

Lösung zum Dekodieren von verstümmeltem PHP-JSON-Code: Konvertieren Sie zunächst die Zeichen vor der JSON-Verarbeitung in die UTF8-Form. Verwenden Sie dann „json_encode“ auf der PHP-Hintergrundseite, um das Array-Array in PHP in einen JSON-String zu konvertieren.

Was tun, wenn PHP JSON chinesische verstümmelte Zeichen dekodiert?

PHP json_encode Chinesische verstümmelte Lösung

Ich glaube, dass viele Leute Ajax verwenden, um mit der Hintergrund-PHP-Seite zu interagieren, die ich habe Alle hatten das Problem verstümmelter chinesischer Schriftzeichen. Als leichtes Datenaustauschformat ist JSON sehr beliebt. Bei der Verwendung von PHP als Hintergrundinteraktion besteht jedoch das Problem verstümmelter chinesischer Zeichen.

JSON ist dasselbe wie js. Die Zeichen auf dem Client werden in der Form von UTF8 verarbeitet. Das heißt, wenn JSON als Datenformat für die Übermittlung und den Empfang verwendet wird, werden die Zeichen durch UTF8-Codierung verarbeitet Wenn unsere Seite bei der Kodierung und Datenbankkodierung nicht UTF8 verwendet, kann es sehr leicht zu verstümmelten chinesischen Zeichen kommen. Die Lösung besteht natürlich darin, UTF8 zu verwenden, wenn JSON-Daten mit js oder PHP verarbeitet werden.

PHP5.2 oder höher verwendet json_encode als integrierte Funktion, was Website-Erstellern großen Komfort bietet. Wir müssen jedoch beachten, dass json_encode nur UTF8-Kodierungszeichen unterstützt, andernfalls ist Chinesisch verstümmelt Zeichen oder Nullwerte werden angezeigt.

Die Lösung gliedert sich in die folgenden zwei Schritte.

Schritt 1

Stellen Sie sicher, dass Zeichen bei der Verarbeitung von JSON in UTF8 codiert sind. Insbesondere können wir sowohl die Datenbankkodierung als auch die Seitenkodierung auf UTF8 ändern. Wenn Sie die GBK-Kodierung verwenden möchten, können Sie die Zeichen natürlich vor der Verarbeitung von JSON in UTF8 konvertieren. In PHP gibt es folgende Methoden:

<?php  
     $data="JSON中文";  
     $newData=iconv("GB2312","UTF-8//IGNORE",$data);  
     echo $newData;  
     //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。  
     //或是("GB2312","UTF-8",$data);  
?>

Step2

Backend-PHP-Seite ( Seite In UTF-8 codiert oder die Zeichen wurden in UTF-8 konvertiert) Verwenden Sie json_encode, um das Array-Array in PHP in einen JSON-String zu konvertieren. Beispiel:

<?php  
    $testJSON=array(&#39;name&#39;=>&#39;中文字符串&#39;,&#39;value&#39;=>&#39;test&#39;);  
    echo json_encode($testJSON);  
?>

Zeigen Sie das Ausgabeergebnis an als:

{“name”:”\u4e2d\u6587\u5b57\u7b26\u4e32″,”value”:”test”}

Es ist ersichtlich, dass json_encode auch bei Verwendung von mit UTF8 codierten Zeichen zu verstümmelten chinesischen Zeichen führt. Die Lösung besteht darin, die Zeichen mit der Funktion urlencode() zu verarbeiten, bevor Sie json_encode verwenden, sie dann mit json_encode zu kodieren und sie bei der Ausgabe der Ergebnisse mit der Funktion urldecode() wieder zurückzukonvertieren. Die Details lauten wie folgt:

<?php  
    $testJSON=array(&#39;name&#39;=>&#39;中文字符串&#39;,&#39;value&#39;=>&#39;test&#39;);  
    //echo json_encode($testJSON);  
    foreach ( $testJSON as $key => $value ) {  
        $testJSON[$key] = urlencode ( $value );  
    }  
    echo urldecode ( json_encode ( $testJSON ) );  
?>

Das Ausgabeergebnis ist:

{“name”:”中文字符串”,”value”:”test”}

An diesem Punkt werden chinesische Schriftzeichen erfolgreich ausgegeben. Fühlen Sie sich frei, json_encode zu verwenden. Auf diese Weise wird die im PHP-Hintergrund ausgegebene JSON-Zeichenfolge beim Empfang von eval durch Ajax im Front-End-Javascript nicht chinesisch verstümmelt angezeigt, da js auch Daten im JSON-Format in Form von UTF8 verarbeitet, was PHP ähnelt Es empfängt die PHP-Seite. Der JSON-String verursacht keine Probleme.

Empfohlen: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn PHP JSON chinesische verstümmelte Zeichen dekodiert?. 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