Comme indiqué dans le titre : Il est actuellement confirmé que la chaîne obtenue est convertie en codage Unicode et stockée dans la table. Le codage de la table est utf-8, le problème rencontré maintenant est : si la fonction json_encode() ; est utilisé pour s'échapper plusieurs fois, puis stocké. La chaîne dans la base de données comporte plusieurs couches de guillemets doubles. Si elle n'est échappée qu'une seule fois et stockée dans la base de données, bien qu'il n'y ait pas de guillemets, les symboles sont manquants, comme indiqué ci-dessous. suivi du code clé. Les débutants peuvent consulter sur la bonne façon de stocker ; p>
< /p>
Code clé :
fonction weixininfo($code){
$userinfo = getJson($get_user_info_url);
$wxif = new wxinfo($userinfo["openid"],$userinfo["nickname"],$userinfo["sex"],$userinfo["headimgurl"]);
classe Emp {} ;
$obj = nouveau Emp();
$obj->résultat = 0 ;
$obj->info = $wxif;
retourner $obj ;
}
$code = $_GET['code'];
$data = weixininfo($code);
$info = $données->info;
$openid = $info->openid;
$surnom = $info->surnom;
$nom = json_encode($surnom);
$sexe = $info->sexe;
$headurl = $info->headurl;
$sqls = "INSÉRER DANS mytest(openid,nickname,sex,headurl) VALUES ("$openid',$name,'$sex','$headurl')";
if($conn->query($sqls) === true){
session_start();
$_SESSION["openid"]=$openid;
$conn->fermer();
// $uri ="./index.php";
// header( "Emplacement : $uri" );
}autre{
echo "Échec :".$sqls."<br>".$conn->erreur;
};
fonction getJson($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return json_decode($output, true);
}
classe wxinfo {
public $openid ;
public $surnom ;
sexe public;
public $headurl ;
fonction publique __construct($openid,$nickname,$sex,$headurl){
$this->openid = $openid;
$this->surnom = $surnom;
$this->sexe = $sexe;
$this->headurl = $headurl;
}
champ mysql défini sur
utf8mb4
-utf8mb4-general_ci
php
Si le tableau prend en charge utf8mb4, remplacez-le par utf8mb4. Si cela n'est pas utile, utilisez utf32 ne prend en charge qu'un petit nombre d'expressions emoji
.Avant d'interroger, exécutez $conn->query("set names utf8") pour vous assurer que le processus de transmission des données n'est pas tronqué
emoji sont aussi des caractères, il n'est pas nécessaire de les convertir en json
utf-8 utilise 3 octets pour le stockage, tandis que les caractères emoji ont 4 octets, donc la conversion de utf-8 en utf8mb4 résoudra le problème
Remarque également : la version de MySQL doit être v5.5.3 ou supérieure