国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php調(diào)用微信用戶信息接口昵稱(chēng)里面的emoji表情怎么存儲(chǔ)到mysql中?
天蓬老師
天蓬老師 2017-05-16 13:06:54
0
3
1028

如題:目前確定是將獲取到的字符串轉(zhuǎn)為unicode編碼存儲(chǔ)到表中,表的編碼是utf-8;現(xiàn)在遇到的問(wèn)題是:如果使用json_encode()函數(shù)多次轉(zhuǎn)義后存儲(chǔ)到數(shù)據(jù)庫(kù)中的字符串多了好幾層的雙引號(hào),如果只轉(zhuǎn)義一次存儲(chǔ)到數(shù)據(jù)庫(kù)中雖然沒(méi)有了引號(hào),但是 符號(hào)不見(jiàn)了,如下圖,后面附關(guān)鍵代碼,新手咨詢存儲(chǔ)的正確方式;

看到回答都是需要將數(shù)據(jù)庫(kù)字符集改為:utf8mb4,想知道不用這個(gè)字符集用utf-8不可以嗎?新手只知道在my.ini修改全局的字符集,不知道怎么針對(duì)這個(gè)字段來(lái)修改啊。

最新更新:經(jīng)過(guò)測(cè)試雖然utf8mb4能夠?qū)?shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,但是還是有問(wèn)題的:如果微信昵稱(chēng)前后面都有表情,中間有文字的時(shí)候,數(shù)據(jù)庫(kù)中只能將前面的表情保存,后面的表情變成了空格,經(jīng)過(guò)幾番周折還是使用了utf8來(lái)保存下圖藍(lán)色條選中的那樣字符串來(lái)保存,在前端對(duì)字符串進(jìn)行去"處理,保證用戶的昵稱(chēng)不被破壞,如果各位有更好的辦法歡迎留言。

關(guān)鍵代碼:

function weixininfo($code){
    $userinfo = getJson($get_user_info_url);
  $wxif = new wxinfo($userinfo["openid"],$userinfo["nickname"],$userinfo["sex"],$userinfo["headimgurl"]);
  class Emp {};
  $obj = new Emp();
  $obj->result = 0;
  $obj->info  = $wxif;
  return $obj;
}

$code = $_GET['code'];
$data = weixininfo($code);
$info = $data->info;
$openid = $info->openid;
$nickname = $info->nickname;
$name = json_encode($nickname);
$sex = $info->sex;
$headurl = $info->headurl;
$sqls = "INSERT INTO mytest(openid,nickname,sex,headurl) VALUES ('$openid',$name,'$sex','$headurl')";
if($conn->query($sqls) === true){
    session_start();
    $_SESSION["openid"]=$openid;
    $conn->close();
    // $uri ="./index.php";
    // header( "Location: $uri" );
}else{
    echo "失?。?.$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);
}
class wxinfo {
  public $openid;
  public $nickname;
  public $sex;
  public $headurl;

  public function __construct($openid,$nickname,$sex,$headurl){
    $this->openid = $openid;
    $this->nickname = $nickname;
    $this->sex = $sex;
    $this->headurl = $headurl;
  }
}
天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見(jiàn)證您的進(jìn)步~~

全部回復(fù)(3)
僅有的幸福
  1. mysql字段設(shè)置為utf8mb4-utf8mb4-general_ci

  2. php

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

表支持utf8mb4的話, 換成utf8mb4, 沒(méi)有用就utf32吧, utf8只支持少量的emoji表情

查詢前, 先執(zhí)行 $conn->query("set names utf8") 保證數(shù)據(jù)傳輸過(guò)程不亂碼

emoji 也是字符, 沒(méi)必要轉(zhuǎn)json

我想大聲告訴你

utf-8使用3個(gè)字節(jié)進(jìn)行存儲(chǔ),而emoji字符有4個(gè)字節(jié),因此將utf-8轉(zhuǎn)換為utf8mb4即可解決

另外注意:mysql的版本必須為v5.5.3或更高

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板