Heim >php教程 >PHP开发 >Eine bessere Lösung zum json_encode verstümmelter chinesischer UTF-8-Zeichen in PHP

Eine bessere Lösung zum json_encode verstümmelter chinesischer UTF-8-Zeichen in PHP

高洛峰
高洛峰Original
2017-04-01 15:26:261624Durchsuche

Ich habe kürzlich json_encode im Code der Schnittstelle verwendet. Ich habe die Kodierung json_encode im Internet gefunden Durch die Einstellung auf UTF-8-Chinesisch werden verstümmelte Zeichen verhindert. Aus irgendeinem Grund funktioniert der Code jedoch nicht mehr richtig. Hier ist meine eigene Lösung für json_encode. Bitte teilen Sie alle guten Methoden mit!

Die erste Methode:

Dies ist eine einfache Codekonvertierung und dann das erforderliche Array zurückgeben

Das reicht aus für meinen Code.

Kopieren Sie den Code wie folgt

public static function encodeOperations ($array)
 
{
 
foreach ((array)$array as $key => $value) {
 
if (is_array($value)) {
 
encodeOperations($array[$key]);
 
} else {
 
$array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));
 
}
 
}
 
return $array;
 
}

Zweiter Typ:

Das habe ich im Internet gesehen, und dann gibt es Kommentare, die das sagen wird ein Endlosschleifenproblem sein, aber das ist offensichtlich sehr umfassend und es ist passiert, nachdem ich es getestet habe. Ich poste es hier nur als Referenz Der Code ist wie folgt

Der Rückgabewert für Chinesisch ist
/**************************************************************
 
*
 
* 使用特定function对数组中所有元素做处理
 
* @param string &$array 要处理的字符串
 
* @param string $tocode 编码后
 
* @param string $oldcode 编码前
 
* @param string $function 要执行的函数
 
* @return boolean $apply_to_keys_also 是否也应用到key上
 
* @return array $array 是否也应用到key上
 
* @access public
 
*
 
*************************************************************/
 
function encodeOperations (&$array, $function, $tocode=false,$oldcode=false,$apply_to_keys_also = false)
 
{
 
foreach ($array as $key => $value) {
(www.jb51.net)
if (is_array($value)) {
 
encodeOperations($array[$key], $function, $apply_to_keys_also);
 
} else {
 
if($tocode&&$oldcode) {
 
if(function_exists(mb_convert_encoding)) {
 
$value = mb_convert_encoding($value,$tocode,$oldcode);
 
}else{
 
return "error";
 
}
 
}
 
$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]);
 
}
 
}
 
}
 
return $array;
 
}
 
 
/****from:http://www.jb51.net/phper/31/66729.htm**********************************************************
 
*
 
* 将数组转换为JSON字符串(兼容中文)
 
* @param array $array 要转换的数组
 
* @return string 转换得到的json字符串
 
* @access public
 
*
 
*************************************************************/
 
function JSON($array) {
 
arrayRecursive($array, 'urlencode', true);
 
$json = json_encode($array);
 
return urldecode($json);
 
}
null

Wenn er leer ist, müssen wir die Zeichen zuerst in uft8 konvertieren oder URL-Code verwenden, um ihn zu kompilieren Weitere bessere Lösungen Zu json_encode UTF-8 verstümmelte chinesische Zeichen in PHP. Für Artikel zu Methoden beachten Sie bitte die chinesische 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