Maison  >  Article  >  développement back-end  >  Solution au code chinois tronqué json_encode UTF-8 en php

Solution au code chinois tronqué json_encode UTF-8 en php

高洛峰
高洛峰original
2017-01-14 13:48:091772parcourir

J'ai récemment utilisé json_encode dans le code de l'interface. J'ai trouvé sur Internet que l'encodage json_encode est défini sur le chinois UTF-8 et qu'il ne sera pas tronqué. Il a été vérifié que cette méthode est effectivement efficace, mais je ne le fais pas. je sais pourquoi. Cela ne fonctionne plus très bien après un certain temps. Ce qui suit est ma propre solution à json_encode. Si vous avez une meilleure méthode, partagez-la !

Le premier type :

Il s'agit d'une simple conversion de code, puis renvoie le tableau requis après le codage url

C'est suffisant pour mon code.

Le code est le suivant Copiez le 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;
 
}

Le deuxième type :

J'ai vu ça sur Internet, et puis il y a eu des commentaires disant qu'il y aurait un problème de boucle infinie. Mais c'est évidemment très complet, et il existe après que je l'ai testé. Il est posté ici pour référence seulement

Le code est le suivant

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

Pour le chinois. , si null est renvoyé, nous devons d'abord convertir les caractères en uft8 ou utiliser urlencode pour compiler.

Pour plus d'articles sur les solutions aux caractères chinois tronqués json_encode UTF-8 en PHP, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn