php调用微信用户信息微信接口昵称特殊字符里面的emoji表情怎么存储到mysql中

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如题:目前确定是将获取到的字符串转为unicode编码存储到表中,表的编码是utf-8;现在遇到的问题是:如果使用json_encode()函数多次转义后存储到数据库中的字符串多了好几层的双引号,如果只转义一次存储到数据库中虽然没有了引号,但是
符号不见了,如下图,后面附关键代码,新手咨询存储的正确方式;
看到回答都是需要将数据库字符集改为:utf8mb4,想知道不用这个字符集用utf-8不可以吗?新手只知道在my.ini修改全局的字符集,不知道怎么针对这个字段来修改啊。
最新更新:经过测试虽然utf8mb4能够将数据存储到数据库中,但是还是有问题的:如果微信昵称前后面都有表情,中间有文字的时候,数据库中只能将前面的表情保存,后面的表情变成了空格,经过几番周折还是使用了utf8来保存下图蓝色条选中的那样字符串来保存,在前端对字符串进行去"处理,保证用户的昵称不被破坏,如果各位有更好的办法欢迎留言。
关键代码:
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
$code = $_GET['code'];
$data = weixininfo($code);
$info = $data-&
$openid = $info-&
$nickname = $info-&
$name = json_encode($nickname);
$sex = $info-&
$headurl = $info-&
$sqls = "INSERT INTO mytest(openid,nickname,sex,headurl) VALUES ('$openid',$name,'$sex','$headurl')";
if($conn-&query($sqls) === true){
session_start();
$_SESSION["openid"]=$
$conn-&close();
// $uri ="./index.php";
// header( "Location: $uri" );
echo "失败:".$sqls."&br&".$conn-&
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 function __construct($openid,$nickname,$sex,$headurl){
$this-&openid = $
$this-&nickname = $
$this-&sex = $
$this-&headurl = $
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
utf-8使用3个字节进行存储,而emoji字符有4个字节,因此将utf-8转换为utf8mb4即可解决
另外注意:mysql的版本必须为v5.5.3或更高
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
mysql字段设置为utf8mb4-utf8mb4-general_ci
json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:Java如何解析微信昵称中的emoji表情? - ITeye问答
最近碰到一个很棘手的问题,就是当使用Java调用微信获取用户信息接口时,如果用户的昵称带有emoji表情,那么解析出来的emoji都是乱码?有没有碰到过这个情况的?如何处理?
&&&&&&&&&&&
这个问题解决了么 ?
求解决办法 ...
像表情之类都有一些特殊符号做起始符之类的,既然是乱码,你就把对应的表情符号编解码,看看不就行了?
已解决问题
未解决问题

我要回帖

更多关于 php 显示微信emoji 的文章

 

随机推荐