Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem der verstümmelten PHP-JSON_ENCODE-Zeichen

So lösen Sie das Problem der verstümmelten PHP-JSON_ENCODE-Zeichen

藏色散人
藏色散人Original
2020-07-09 12:36:353710Durchsuche

Lösung für verstümmelten PHP-JSON_ENCODE-Code: Ändern Sie zuerst die Datenbankcodierung und die Seitencodierung in UTF8. Verwenden Sie dann „json_encode“, um das Array-Array in PHP in einen JSON-String zu konvertieren.

So lösen Sie das Problem der verstümmelten PHP-JSON_ENCODE-Zeichen

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. Client-Zeichen werden in der Form von UTF8 verarbeitet. Das heißt, wenn wir JSON als Datenformat für die Übermittlung und den Empfang verwenden, werden die Zeichen nicht in UTF8 codiert Bei Verwendung von UTF8 kommt es extrem leicht zu verstümmelten chinesischen Zeichen. Die Lösung besteht natürlich darin, UTF8 zu verwenden, wenn JSON-Daten mit js oder PHP verarbeitet werden.

PHP 5.2 oder höher verwendet json_encode als integrierte Funktion, was den Website-Erstellern großen Komfort bietet. Wir müssen jedoch beachten, dass json_encode nur UTF8-codierte Zeichen unterstützt Es erscheint ein Nullwert.

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

Schritt 1

Stellen Sie sicher, dass die 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 die folgenden Methoden:

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

Schritt2

Die Hintergrund-PHP-Seite (die Seite ist als UTF-8 codiert oder die Zeichen wurden in UTF-8 konvertiert) verwendet json_encode zum Konvertieren Das Array-Array in PHP ist ein JSON-String. 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 ) );  
 ?>

Sehen Sie sich das Ausgabeergebnis an als:

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

Zu diesem Zeitpunkt 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.

Weitere verwandte Artikel finden Sie auf der PHP-Chinese-Website!

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der verstümmelten PHP-JSON_ENCODE-Zeichen. 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