Heim > php教程 > PHP开发 > Hauptteil

Lösung für json_encode in PHP zur Bewältigung verstümmelter chinesischer GBK- und GB2312-Probleme

高洛峰
Freigeben: 2016-12-27 16:15:12
Original
1890 Leute haben es durchsucht

Dieser Artikel beschreibt, wie json_encode in PHP das chinesische verstümmelte Problem von gbk und gb2312 behandelt. Die spezifische Methode lautet wie folgt:

1.json_encode() Chinesisch gibt null für Chinesisch in gbk/gb2312 zurück

$arr = array (
 array (
   'catid' => '4',
   'catname' => 'www.jb51.net',
   'meta_title' => '脚本之家'
  )
);
  
echo json_encode($arr);
Nach dem Login kopieren

Laufergebnis:

[{"catid":"4","catname":"www.jb51.net","meta_title":null}]
Nach dem Login kopieren

Schauen Sie sich „meta_title“ an: null Es hatte ursprünglich den Wert „Script Home“. Das Prinzip ist, dass json_encode nur die uft-8-Codierung unterstützt >
2. Die PHP-Hintergrundseite (die Seite ist als UTF-8 codiert oder die Zeichen wurden in UTF-8 konvertiert) verwendet json_encode, um das Array-Array in PHP in einen JSON-String zu konvertieren. Beispiel:

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

Ausgabeergebnis anzeigen:

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

Sichtbar Selbst wenn UTF8-kodierte Zeichen verwendet werden, erscheinen bei Verwendung von json_encode verstümmelte chinesische Zeichen. Die Lösung besteht darin, die Zeichen mit der Funktion urlencode() zu verarbeiten, bevor Sie json_encode und dann json_encode verwenden, und sie dann bei der Ausgabe des Ergebnisses mit der Funktion urldecode() zurückzukonvertieren. Die Details lauten wie folgt:

{"name":"u4e2du6587u5b57u7b26u4e32″,"value":"test"}
Nach dem Login kopieren

Ausgabeergebnis anzeigen:

<?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 ) );
?>
Nach dem Login kopieren

Zusammenfassung: Die json_encode-Funktion kann nur uft8-Zeichenfolgen verarbeiten. Wenn sie chinesisch ist, verarbeitet sie Bytes wahrscheinlich nicht gut, da die Längen von chinesischem gbk und uft unterschiedlich sind.

{"name":"中文字符串","value":"test"}
Nach dem Login kopieren
Weitere verwandte Artikel darüber, wie json_encode in PHP mit gbk- und gb2312-chinesischen verstümmelten Problemen umgeht, finden Sie auf der chinesischen PHP-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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage