Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung für json_encode UTF-8 chinesischen verstümmelten Code in PHP

Lösung für json_encode UTF-8 chinesischen verstümmelten Code in PHP

高洛峰
高洛峰Original
2017-01-14 13:48:091772Durchsuche

Ich habe kürzlich im Schnittstellencode json_encode verwendet und festgestellt, dass die Codierung von json_encode nicht verstümmelt wird. Es wurde bestätigt, dass diese Methode tatsächlich effektiv ist Ich weiß nicht, warum es nach einer Weile nicht mehr so ​​gut funktioniert. Das Folgende ist meine eigene Lösung für json_encode. Wenn Sie eine bessere Methode haben, teilen Sie sie bitte mit!

Das erste:

Dies ist eine einfache Codekonvertierung und die Rückgabe des erforderlichen Arrays nach der URL-Codierung

Das reicht für meinen Code.

Der Code lautet wie folgt: Kopieren Sie den Code

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

Der zweite Typ:

Ich habe das im Internet gesehen, und dann gab es Kommentare, die besagten, dass es einen geben würde Ein Endlosschleifenproblem. Aber das ist offensichtlich sehr umfassend und existiert, nachdem ich es getestet habe. Es wird hier nur als Referenz veröffentlicht.

Der Code lautet wie folgt

/**************************************************************
 
*
 
* 使用特定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);
 
}

Für Chinesisch Wenn null zurückgegeben wird, müssen wir die Zeichen zuerst in uft8 konvertieren oder URL-Code zum Kompilieren verwenden.

Weitere verwandte Artikel zu Lösungen für json_encode UTF-8 verstümmelte chinesische Zeichen in PHP 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