Comment stocker l'expression emoji dans le surnom de l'interface d'informations utilisateur WeChat en PHP dans MySQL ?
天蓬老师
天蓬老师 2017-05-16 13:06:54
0
3
945

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 ;

J'ai vu des réponses selon lesquelles le jeu de caractères de la base de données doit être modifié par : utf8mb4. Je voudrais savoir s'il n'est pas possible d'utiliser utf-8 à la place de ce jeu de caractères ? Les débutants savent seulement comment modifier le jeu de caractères global dans my.ini, mais ne savent pas comment modifier ce champ.

Dernière mise à jour : après les tests, bien que utf8mb4 puisse stocker des données dans la base de données, il y a toujours un problème : s'il y a des expressions avant et après le pseudo WeChat, et qu'il y a du texte au milieu, seule la première expression peut être enregistrée dans la base de données, et la dernière peut être enregistrée dans la base de données. L'expression s'est transformée en espace. Après plusieurs rebondissements, j'ai encore utilisé utf8 pour enregistrer la chaîne sélectionnée dans la barre bleue de l'image ci-dessous. -traité sur le front-end pour garantir que le pseudo de l'utilisateur n'est pas détruit. Si vous avez un meilleur moyen, veuillez laisser un message

.

< /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;
  }
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(3)
仅有的幸福
  1. champ mysql défini sur utf8mb4-utf8mb4-general_ci

  2. php

<?php
json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
phpcn_u1582

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal