Maison >php教程 >PHP开发 >Une meilleure solution pour les caractères chinois tronqués json_encode UTF-8 en php

Une meilleure solution pour les caractères chinois tronqués json_encode UTF-8 en php

高洛峰
高洛峰original
2017-04-01 15:26:261617parcourir

J'ai récemment utilisé json_encode dans le code interface . J'ai trouvé l'encodage json_encode sur Internet Le définir sur le chinois UTF-8 empêchera les caractères tronqués. Il a été prouvé que cette méthode est effectivement efficace, mais pour une raison quelconque, le code ne fonctionne pas bien après l'avoir utilisé pendant un certain temps. Voici ma propre solution à json_encode. Veuillez partager toutes les bonnes méthodes !

La première méthode :

Il s'agit d'une simple conversion de code, puis renvoyez le tableau requis

C'est suffisant pour mon code.

Copiez le code comme suit

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

Deuxième type :

C'est ce que j'ai vu sur Internet, et puis il y a des commentaires qui disent que là sera un problème de boucle infinie, mais c'est évidemment très complet, et cela s'est produit après l'avoir testé. Je le publie 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);
 
}
La valeur de retour pour le chinois est

nulleSi elle est vide, nous devons d'abord convertir les caractères en uft8 ou utiliser urlencode pour la compiler

Plus de meilleures solutions. vers json_encode Caractères chinois tronqués UTF-8 en php Pour les articles liés aux méthodes, 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