cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menyimpan ungkapan emoji dalam nama samaran antara muka maklumat pengguna WeChat dalam PHP ke dalam mysql?

Seperti yang ditunjukkan dalam tajuk: Pada masa ini disahkan bahawa rentetan yang diperoleh ditukar kepada pengekodan unikod dan disimpan dalam jadual Pengekodan jadual ialah utf-8 ialah: jika fungsi json_encode(). digunakan untuk melarikan diri beberapa kali dan kemudian disimpan Rentetan dalam pangkalan data mempunyai beberapa lapisan tanda petikan berganda. diikuti dengan kod kunci. Orang baru boleh berunding tentang cara yang betul untuk menyimpan;

Saya melihat jawapan bahawa set aksara pangkalan data perlu ditukar kepada: utf8mb4 Saya ingin tahu sama ada tidak mungkin untuk menggunakan utf-8 dan bukannya set aksara ini? Pemula hanya tahu cara mengubah suai set aksara global dalam my.ini, tetapi tidak tahu cara mengubah suai medan ini.

Kemas kini terkini: Selepas ujian, walaupun utf8mb4 boleh menyimpan data dalam pangkalan data, masih terdapat masalah: jika terdapat ungkapan sebelum dan selepas nama panggilan WeChat, dan terdapat teks di tengah, hanya ungkapan pertama boleh disimpan dalam pangkalan data, dan yang terakhir boleh disimpan dalam ungkapan pangkalan data bertukar menjadi ruang selepas beberapa pusingan, saya masih menggunakan utf8 untuk menyimpan rentetan yang dipilih dalam bar biru dalam gambar di bawah mempunyai maklumat lanjut, Idea yang baik dialu-alukan untuk meninggalkan mesej

< /p>

Kod kunci:

function weixininfo($code){
    $userinfo = getJson($get_user_info_url);
  $wxif = new wxinfo($userinfo["openid"],$userinfo["nickname"],$userinfo["sex"],$userinfo["headimgurl"]);
  kelas Emp {};
  $obj = new Emp();
  $obj->hasil = 0;
  $obj->maklumat = $wxif;
  pulangkan $obj;
}

$kod = $_GET['kod'];
$data = weixininfo($kod);
$info = $data->info;
$openid = $info->openid;
$nama panggilan = $info->nama panggilan;
$nama = json_encode($nama panggilan);
$seks = $info->seks;
$headurl = $info->headurl;
$sqls = "INSERT INTO mytest(openid,nickname,sex,headurl) NILAI ('$openid',$name,'$sex','$headurl')";
if($conn->query($sqls) === true){
    session_start();
    $_SESSION["openid"]=$openid;
    $conn->close();
    // $uri ="./index.php";
    // header( "Lokasi: $uri" );
}lain{
    echo "Gagal:".$sqls."<br>".$conn->error;
};
function 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);
}
kelas wxinfo {
  awam $openid;
  nama panggilan awam;
  awam $seks;
  awam $headurl;

  fungsi awam __construct($openid,$nama samaran,$seks,$headurl){
    $this->openid = $openid;
    $ini->nama panggilan = $nama panggilan;
    $ini->seks = $seks;
    $this->headurl = $headurl;
  }
}
天蓬老师天蓬老师2840 hari yang lalu984

membalas semua(3)saya akan balas

  • 仅有的幸福

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

    1. medan mysql ditetapkan kepada utf8mb4-utf8mb4-general_ci

    2. php

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

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:08:54

    Jika jadual menyokong utf8mb4, tukar kepada utf8mb4 Jika ia tidak berguna, gunakan utf32 hanya menyokong sebilangan kecil ekspresi emoji

    Sebelum membuat pertanyaan, jalankan $conn->query("set names utf8") untuk memastikan proses penghantaran data tidak bercelaru

    emoji juga adalah aksara, tidak perlu menukarnya kepada json

    balas
    0
  • 我想大声告诉你

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

    utf-8 menggunakan 3 bait untuk storan, manakala aksara emoji mempunyai 4 bait, jadi menukar utf-8 kepada utf8mb4 akan menyelesaikannya

    Juga ambil perhatian: versi mysql mestilah v5.5.3 atau lebih tinggi

    balas
    0
  • Batalbalas