轻松处理PHP开发中微信emoji表情mysql存储的问题

背景

做微信开发的时候发现,微信支持emoji表情做昵称,结果考虑不周

Mysql表设计时,都是用UTF8字符集的。把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串。有的根本插入是失败,原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。

这要怎么办呢?

第一种方案:

如果你已经有很多数据了就不要修改字符集了因为会造成乱码情况你可以干掉他或者表情替换成***

$result[‘nickname‘] = preg_replace(‘/\\\u[a-z0-9]{4}/‘, ‘*‘, userTextEncode($result[‘nickname‘]));

function userTextEncode($str){

if(!is_string($str))return $str;

if(!$str || $str==‘undefined‘)return ‘‘;

$text = json_encode($str); //暴露出unicode

$text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3})/i",function($str){

return addslashes($str[0]);

},$text); //将emoji的unicode留下,其他不动,这里的正则比原答案增加了d,因为我发现我很多emoji实际上是\ud开头的,反而暂时没发现有\ue开头。

return json_decode($text);

}

第二种方案:

如果你还在测试阶段并没有真正产品数据就果断转化mysql字符集为:utf8mb4字符集,但是要求你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集

这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案,至于字节增大带来的性能损耗,可以忽略不计。

以上方案就可解决PHP微信昵称或一些富文本编辑器中的表情问题,希望大家喜欢。

时间: 2024-08-01 02:35:26

轻松处理PHP开发中微信emoji表情mysql存储的问题的相关文章

教你如何让数据库支持emoji表情符存储

From: http://www.cnblogs.com/janehoo/archive/2016/04/06/5359800.html 一.教你如何让数据库支持emoji表情符存储 解决方式:更换字符集utf8-->utf8mb4 上周有开发人员反馈一个问题:前台应用抓取微博信息,每天总有几条数据插入不成功.应用日志显示: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column '

3种方法轻松处理php开发中emoji表情的问题

背景 做微信开发的时候就会发现,存储微信昵称必不可少. 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了.这要怎么办呢?我来介绍几种方法 解决方案 1.使用utf8mb4字符集 如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf

Android开发中微信登陆

关于android开发中的微信登陆,除了使用shareSDK,我们使用腾讯开发者平台上提供的SDK,按照官网步骤实现第三方登陆的功能. 微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权.该模式整体流程为: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数: 2. 通过code参数加上AppID和AppSecret等,通过API换取access_tok

让MySQL支持Emoji表情 mysql 5.6

让MySQL支持Emoji表情,涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集. mysql 版本 5.6 1 解决方案:将Mysql的编码从utf8转换成utf8mb4. 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不支持这个字符集.复制报错 2 my.cnf 文件添加 [mysqld]  character-set-server = utf8mb4  collation-server = utf8mb4_unicode_ci  init_c

微信Emoji表情代码大全

参考网址 含义 标准 DoCoMo KDDI 软银 谷歌 微信 ?复制这列?? 太阳 U + 2600 U + E63E U + E488 U + E04A U + FE000 ? 白云 U + 2601 U + E63F U + E48D U + E049 U + FE001 ? 伞与雨滴 U + 2614 U + E640 U + E48C U + E04B U + FE002 ? 雪人 U + 26C4 U + E641 U + E485 U + E048 U + FE003 ? 闪电高压

ios中使用emoji表情

在iOS UILabel,UITextView,UIAlertView等控件中都可以使用 使用方法如下 NSString *s = [NSString stringWithFormat:@"This is a smiley \ue415 %C face",0xE05A]; NSLog(@"11----%@",s); label.text=s; 以下是对应的表情编码,但是新版sdk中编码有所改变,具体请参考苹果官方文档对照着看http://opensource.app

字符串中带有emoji表情处理

1:先删除字符然后解析当前字符再显示 edit.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { }

微信emoji表情编码 、MySQL 存储 emoji 表情符号字符集

1.把 PHP 连接 MySQL 的字符集 由 utf8 改为 utf8mb4:ThinkPHP框架中,改下 配置文件 /ThinkPHP/Conf/convention.php 的 DB_CHARSET 为 utf8mb4 (默认为 utf8) 2.把 聊天记录表的 聊天内容字段的 字符集改为 utf8mb4_general_ci: 原文地址:https://www.cnblogs.com/gaocy/p/9559410.html

一文让你轻松了解JAVA开发中的四种加密方法

文章目录 一.工具类 md5加密工具类 base64加密工具类 Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1. md5加密工具类 package 加密Tester.util; import java.security.MessageDigest; public class MD5Utils { private static final String hexDigIts[] = {"0","1&qu