php 解决微信昵称emoji表情插入MySQL报错
在PHP接受到微信用户昵称入库的时候报错
原因:utf-8 最大3个字节,而emoji占4个字节
解决办法:
1.修改mysql 数据库的字符集,改为utf8mb4,但是前提是MySQL的版本需要5.5以上
由于我用的MySQL还是5.0的,所以用其他方法
2.用PHP过滤emoji
1 private function emoji_encode($nickname){ 2 $strEncode = ''; 3 $length = mb_strlen($nickname,'utf-8'); 4 for ($i=0; $i < $length; $i++) { 5 $_tmpStr = mb_substr($nickname,$i,1,'utf-8'); 6 if(strlen($_tmpStr) >= 4){ 7 $strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr).']]'; 8 }else{ 9 $strEncode .= $_tmpStr; 10 } 11 } 12 return $strEncode; 13 }
取出的时候再转码