Maison > développement back-end > tutoriel php > Solution au problème selon lequel json_encode en php ne prend pas en charge l'encodage GB2312

Solution au problème selon lequel json_encode en php ne prend pas en charge l'encodage GB2312

黄舟
Libérer: 2023-03-17 15:02:02
original
2484 Les gens l'ont consulté

Dans l'article précédent, nous avons présenté le problème du transcodage UNICODE chinois json_encode en php, nous allons donc aujourd'hui continuer à vous présenter le problème que json_encode en php ne prend pas en charge l'encodage GB2312, en php En utilisant json_encode() fonction intégrée (php > 5.2), les données en php peuvent être très bien transférées et utilisées avec d'autres langages. La fonction de cette fonction est de convertir des valeurs en json. format de stockage des données.

est le suivant :

$arr = array('Name'=>'希亚', 'Age'=>20); 
$jsonencode = json_encode($arr); 
echo $jsonencode;
Copier après la connexion

Résultats d'exécution :

{"Name":null,"Age":20}
Copier après la connexion

Le chinois dans la fonction json_encode est codé comme null Je l'ai recherché sur Google et c'est. très simple. , afin d'être étroitement intégré au front-end, Json ne prend en charge que l'encodage utf-8. Je pense que c'est la raison pour laquelle le Javascript du front-end est également utf-8. La solution est la suivante :

$array = array (     
'title'=>iconv('gb2312','utf-8','这里是中文标题'),     
'body'=>'abcd...' );  
echo json_encode($array);
Copier après la connexion

Résultat de l'exécution :

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}
Copier après la connexion

Tous les caractères chinois du tableau sont manquants ou u2353 etc. apparaissent après json_encode.

La solution est d'utiliser la fonction urlencode() pour traiter ce qui suit. Avant json_encode, utilisez urlencode() pour traiter tout le contenu de tous les tableaux, puis utilisez json_encode() pour le convertir en json<. 🎜>string, et enfin utilisez urldecode() pour reconvertir le chinois encodé.

Un exemple de programme est le suivant :

/************************************************************** 
 * 
 *    使用特定function对数组中所有元素做处理 
 *    @param    string    &$array        要处理的字符串 
 *    @param    string    $function    要执行的函数 
 *    @return boolean    $apply_to_keys_also        是否也应用到key上 
 *    @access public 
 * 
 *************************************************************/ 
function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 
{ 
    static $recursive_counter = 0; 
    if (++$recursive_counter > 1000) { 
        die(&#39;possible deep recursion attack&#39;); 
    } 
    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--; 
} 
 
/************************************************************** 
 * 
 *    将数组转换为JSON字符串(兼容中文) 
 *    @param    array    $array        要转换的数组 
 *    @return string        转换得到的json字符串 
 *    @access public 
 * 
 *************************************************************/ 
function JSON($array) { 
    arrayRecursive($array, &#39;urlencode&#39;, true); 
    $json = json_encode($array); 
    return urldecode($json); 
} 
 
$array = array(&#39;Name&#39;=>&#39;希亚&#39;, &#39;Age&#39;=>20); 
 
echo JSON($array);
Copier après la connexion

Résumé :

Cet article résout le problème du json_encode chinois en php à travers des cas de code Concernant le problème du transcodage UNICODE, je crois que les amis qui rencontrent le même problème peuvent facilement le résoudre !


Recommandations associées :

Explication détaillée de la fonction json_encode() en php

Solution au problème du transcodage UNICODE chinois en json_encode en php


Introduction aux exemples d'utilisation de json_encode en php

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Derniers numéros
c++ appelle javascript
Depuis 1970-01-01 08:00:00
0
0
0
Qu’est-ce que le garbage collection JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Que sont les fonctions de hook JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Comment obtenir la date actuelle en JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal