Maison  >  Article  >  développement back-end  >  Comment résoudre les caractères chinois tronqués ajax php

Comment résoudre les caractères chinois tronqués ajax php

藏色散人
藏色散人original
2020-11-18 10:12:112064parcourir

Solution tronquée en chinois Ajax PHP : 1. Utilisez l'encodage utf-8 pour toutes les données ; 2. Utilisez les deux fonctions "function JSON($array) {}" et "arrayRecursive" pour encoder chacune. Les caractères peuvent être codés séparément.

Comment résoudre les caractères chinois tronqués ajax php

L'environnement d'exploitation de ce tutoriel : système Windows 10, php5.6 Cet article est applicable à toutes les marques d'ordinateurs.

Recommandé : "Tutoriel vidéo PHP"

PHP utilisant un problème tronqué en chinois ajax

En php, extraire de la base de données Après les données, nous extrayons généralement 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. passé. C'est la fonction json_encode() qui est utilisée. 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 voyez qu'une fois le tableau du tableau formaté en json, les données sont installées dans [] Entre parenthèses, les tableaux à l'intérieur sont entre accolades {}, mais ils sont toujours tronqués.

Pour résoudre le problème du code tronqué, 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, l'encodage PHP et l'encodage frontal.

Méthode 2 : utilisez les deux 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) >

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

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

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