Heim  >  Artikel  >  php教程  >  Lösung für json_encode in PHP zur Bewältigung verstümmelter chinesischer GBK- und GB2312-Probleme

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

高洛峰
高洛峰Original
2016-12-27 16:15:121872Durchsuche

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);

Laufergebnis:

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

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);
?>

Ausgabeergebnis anzeigen:

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

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"}

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 ) );
?>

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"}
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!

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