recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment stocker l'expression emoji dans le surnom de l'interface d'informations utilisateur WeChat en PHP dans MySQL ?

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;
  }
天蓬老师天蓬老师2840 Il y a quelques jours982

répondre à tous(3)je répondrai

  • 仅有的幸福

    仅有的幸福2017-05-16 13:08:54

    1. champ mysql défini sur utf8mb4-utf8mb4-general_ci

    2. php

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

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:08:54

    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

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:08:54

    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

    répondre
    0
  • Annulerrépondre