Bagaimana untuk menyimpan ungkapan emoji dalam nama samaran antara muka maklumat pengguna WeChat dalam PHP ke dalam mysql?
天蓬老师
天蓬老师 2017-05-16 13:06:54
0
3
960

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

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

membalas semua(3)
仅有的幸福
  1. medan mysql ditetapkan kepada utf8mb4-utf8mb4-general_ci

  2. php

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

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

我想大声告诉你

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan