如题:目前确定是将获取到的字符串转为unicode编码存储到表中,表的编码是utf-8;现在遇到的问题是:如果使用json_encode()函数多次转义后存储到数据库中的字符串多了好几层的双引号,如果只转义一次存储到数据库中虽然没有了引号,但是 符号不见了,如下图,后面附关键代码,新手咨询存储的正确方式;
关键代码:
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;
}
}
champ mysql défini sur
utf8mb4
-utf8mb4-general_ci
php
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