php mysql 微信昵称_php 解决微信昵称emoji表情插入MySQL报错

在PHP接受到微信用户昵称入库的时候报错

1417be83be82f15f5b2ab791953ae845.png

原因:utf-8 最大3个字节,而emoji占4个字节

解决办法:

1.修改mysql 数据库的字符集,改为utf8mb4,但是前提是MySQL的版本需要5.5以上

由于我用的MySQL还是5.0的,所以用其他方法

2.用PHP过滤emoji

private function emoji_encode($nickname){

$strEncode = '';

$length = mb_strlen($nickname,'utf-8');

for ($i=0; $i < $length; $i++) {

$_tmpStr = mb_substr($nickname,$i,1,'utf-8');

if(strlen($_tmpStr) >= 4){

$strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr).']]';

}else{

$strEncode .= $_tmpStr;

}

}

return $strEncode;

}

取出的时候再转码

解决 微信包含emoji表情的昵称,直接用sql语句可以写入而在yii2框架写却写不成功的 问题

背景: 首先是emoji表情写入不成功,在网上查了许多资料,包括配置mysql,重启mysql等等,这样之后发现还是写入失败. 将sql语句复制出来,直接粘贴到mysql客户端执行,发现没问题.而通过 ...

爬虫学习之-python插入mysql报错

异常:'latin-1' codec can't encode characters in position 62-66: ordinal not in range(256) 用Python通过pym ...

开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法

开启bin-log日志mysql报错:This function has none of DETERMINISTIC, NO SQL解决办法: 创建存储过程时 出错信息: ERROR 1418 (HY ...

解决MySQL报错ERROR 2002 (HY000)【转】

今天在为新的业务线搭架数据库后,在启动的时候报错 root@qsbilldatahis-db01:/usr/local/mysql/bin# ./mysql ERROR 2002 (HY000): C ...

解决Mysql报错缺少libaio.so.1

解决Mysql报错缺少libaio.so.1 报错如上图,需要安装libaio.so.1 64位系统安装: wget http://mirror.centos.org/centos/6/os/x86_ ...

MySQL报错解决:The MySQL server is running with the --read-only option so it cannot execute this statement

MySQL报错:The MySQL server is running with the --skip-grant-tables option so it cannot execute this st ...

随机推荐

System.Diagnostics.Process 启动进程资源或调用外部的命令的使用

经常看到一些程序在保存为一个txt,或者excel的文件的时候,保存完毕立即打开, 启动程序或打开文件的代码 System.Diagnostics.Process.Start(System.IO.Pa ...

elasticsearch scroll api--jestclient invoke

@Test public void testScroll(){ JestClientFactory factory = new JestClientFactory(); factory.setHttp ...

C# WinForm多线程(三)---- Control.Invoke[转]

你可能感兴趣的:(php,mysql,微信昵称)