Maison  >  Article  >  développement back-end  >  Comment résoudre le code chinois tronqué en php ajax ?

Comment résoudre le code chinois tronqué en php ajax ?

青灯夜游
青灯夜游original
2020-11-06 10:54:421761parcourir

Solution : 1. Utilisez l'encodage UTF-8 pour toutes les données, y compris l'encodage de la base de données, l'encodage PHP et l'encodage frontal ; 2. Utilisez json_encode() et urlencode() pour encoder chaque caractère séparément, puis utilisez La fonction urldecode() effectue le décodage et renvoie la valeur.

Comment résoudre le code chinois tronqué en php ajax ?

Recommandé : "Tutoriel vidéo PHP"

En php, après avoir extrait les données de la base de données, nous allons généralement Extrayez plusieurs lignes de données à la fois. Si le front-end js utilise ajax pour interagir avec le back-end, php ne peut faire écho qu'à une seule donnée, mais nous avons plusieurs données, donc un seul tableau peut être transmis. (), la fonction json_encode() signifie convertir les données en données json.

Voyons comment convertir un tableau

php :

Nous créons d'abord deux tableaux en php, l'un contient du chinois, l'autre contient des chiffres ou de l'anglais, et enfin les sorties Jetez un oeil. Idée : Les valeurs associées sont plus intuitives

$gg=array('a'=>'中国','b'=>'日本','c'=>'美国','d'=>'加拿大','e'=>'法国');
$yy=array('f'=>'6','g'=>'7','h'>='8','i'=>'tom','j'=>'kevin');

Un seul des tableaux est affiché :

echo $json=json_encode($gg);

Le résultat de sortie est le suivant

{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"}

Il y a des accolades sur des deux côtés, et les caractères sont tronqués

Mettez deux tableaux dans un seul tableau et affichez-les en même temps

echo $json=json_encode(array($gg,$yy));

Le résultat de sortie est le suivant :

[{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"},{"f":"6","g":"7","0":true,"i":"tom","j":"kevin"}]

Nous pouvons voir qu'une fois le tableau du tableau formaté en json, les données sont entre crochets [] et les tableaux à l'intérieur sont entre accolades {}, mais ils sont toujours tronqués.

Pour résoudre le problème des caractères tronqués, il existe deux méthodes,

Méthode 1 : Toutes les données sont codées uniformément en utf-8, y compris l'encodage à partir de la base de données, le codage PHP et le codage front-end.

Méthode 2 : utilisez les fonctions suivantes pour encoder chaque caractère séparément : (Certains symboles semblent ne pas réussir à s'échapper, l'utilisation de cette méthode n'est donc pas recommandée)

function JSON($array) { 
    arrayRecursive($array, 'urlencode', true); 
    $json = json_encode($array); 
    return urldecode($json); 
}

	function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ 
    static $recursive_counter = 0; 
    if (++$recursive_counter > 1000) { 
        die('possible deep recursion attack'); 
    } 
    foreach ($array as $key => $value) { 
        if (is_array($value)) { 
            arrayRecursive($array[$key], $function, $apply_to_keys_also); 
        } else { 
            $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]); 
            } 
        } 
    } 
    $recursive_counter--; 
}

Après avoir utilisé ces deux fonctions, le résultat de sortie est :

[{"a":"中国","b":"日本","c":"美国","d":"加拿大","e":"法国"},{"f":"6","g":"7","0":"1","i":"tom","j":"kevin"}]

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en 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