最近一个朋友在调用微信接口的时候,获取到的数据保存到数据库失败了,原因是因为里面含有emoji表情,接下来吾爱编程为大家介绍一下关于php保存emoji表情的方法,有需要的小伙伴可以参考一下:

1、保存失败的原因:

正常设计数据库的时候编码我们一般设置的是utf8格式的,utf8格式的字符集是3个字节,而emoji表情的字符集对应的是4个字节的,所以会保存失败。

2、解决方法:

(1)、更改数据库的编码格式:

数据库的编码改成utf8mb4,然后需要存储emoji表情的字段选择utf8mb4_general_ci。

ps:不建议使用这种处理方法,因为更改了编码格式会有一系列的问题,比如utf8mb4的性能可能比utf8系列的collations低,在索引中,对于文本类型的字段,utf8mb4可索引的字符少于utf8系列的collations。

(2)、使用base64编码:

使用base64编码的时候,一定要保证之前的数据也做了相应的转码,不然会导致数据丢失。

(3)、emoji表情转义:<?php

/**

*把用户输入的文本转义(主要针对特殊符号和emoji表情)

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

*/

public 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) {

returnaddslashes($str[0]);

}, $text);

returnjson_decode($text);

}

/**

*解码上面的转义

*将两条斜杠变成一条,其他不动

*/

public function userTextDecode($str) {

$text = json_encode($str);

$text = preg_replace_callback('/\\\\\\\\/i', function ($str) {

return'\\';

}, $text);

returnjson_decode($text);

}

turnjson_decode($text);

}

以上就是吾爱编程为大家介绍的关于php保存emoji表情的方法,了解更多相关文章请关注吾爱编程网!

php保存emoji表情,php保存emoji表情相关推荐

  1. 微信昵称包含emoji表情,保存异常

    MySQL要存储emoji表情,由于emoji表情的unicode编码占用4个字节,而Mysql的utf8编码最多只能存储3个字节, 所以保存到数据库时会产生异常,一般两种解决方法, 方法一 修改数据 ...

  2. java 过滤微信昵称_java过滤微信昵称emoji表情与非emoji的问题解决方法

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 过滤emoji表情与非emoji表情 * @author h ...

  3. emoji 原生表情解析成对应表情包png

    最近刚完成一个给客服用的客服软件,用的是c#,这里记录的是我的聊天窗口(控件webBrowser)里,采用html标签解析聊天内容,如何实现将emoji原生表情解析成对应表情包中的png. 首先win ...

  4. mysql 过滤emoji表情_MySQL中emoji表情过滤

    问题描述 最近在对线上排错过程中发现很多入库时产生的错误日志,表现形态如下 Incorrectstringvalue:'\xF0\x9F\x91\x8D\xE6\x94...'forcolumn'co ...

  5. 【博客表情包】emoji和符号表情包

    [博客表情包]emoji和符号表情包 带图网站 博客使用 常见的心心 符号表情 感谢大家的博客,让我发现了很多有趣的技术,欢迎各位大佬在评论区补充~ 看到有的大佬博客标题带有

  6. java emoji 编码_Java对Emoji表情编码与解码

    Java对Emoji表情编码与解码,使用到Java Emoji Converter . GitHub地址:https://github.com/binarywang/java-emoji-conver ...

  7. java emoji过滤_java过滤emoji表情

    java手机端网页常用的过滤emoji表情,注意:过滤常规emoji表情,iso或安卓一些手机自带的特殊表情不在过滤范围 import java.util.regex.Matcher; import ...

  8. access如何保存小数点后_搞笑沙雕表情包合集,顺便教会你保存后如何转换成微信表情包...

    1.表情包三巨头之一日本声优花泽香菜,这个魔性的微笑是她在一次综艺节目中偶然露出的,随即在网络上走红. 别看花泽香菜这个表情包那么魔性,其实她不露出这个表情的时候是个女神哦! 2.打工是不可能打工的, ...

  9. Lable加载 类似QQ表情 (unicode emoji字符集)

    Lable加载 类似QQ表情 (unicode emoji字符集) 偶然看到一篇文,发现竟然可以在iPhone中显示类似qq表情的符号.原来很简单,是iPhone支持unicodeemoji字符集缘故 ...

最新文章

  1. 仔细选择会话状态提供程序
  2. 互联网金融2.0 这是最好的时代
  3. svchost.exe介绍
  4. libevent源码分析:eventop
  5. SMMS 2016 啟用深色主題
  6. 《转》VC++多线程编程
  7. POJ1661 Help Jimmy(dp)
  8. CSU 1120 病毒
  9. s8 android10,旧机不是部部有 三星 Galaxy S8 将不会获得 Android 10 更新
  10. Android多媒体框架图
  11. 【JavaScript回顾】闭包
  12. PyQt5之QDateTimeEdit编辑日期时间
  13. Error Code: 1318. Incorrect number of arguments for PROCEDURE student.new_procedure; expected 0, got
  14. STM32—sg90编程
  15. 有限责任公司破产清算程序有哪些
  16. 魅族flashfire_高通平台所有黑砖(不开机)手机通用救砖方法
  17. 电晕放电和击穿空气有何区别?---气体放电管击穿放电
  18. 封闭式基金周折价率排行表20061013(ZT)
  19. python输出唐诗 青少年编程电子学会python编程等级考试二级真题解析2021年12月
  20. arcgis计算坡度

热门文章

  1. 自主云服务器处理器_统信服务器操作系统 V20 欧拉版发布
  2. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数
  3. mysql optimizertrace_MySQL 调优 | OPTIMIZER_TRACE详解
  4. (八)构建一个Docker容器来训练Deep Fake Autoencoders
  5. 逐步淘汰,微软宣布多款产品将停止支持 IE11
  6. 通过GitHub Actions构建和部署Jekyll网站
  7. python如何进行web开发_如何用Python做Web开发
  8. 关于axios拿取后端hashMap存的值
  9. linux nginx编译安装mysql_Centos7下编译安装配置Nginx+PHP+MySql环境
  10. 不同分辨率图片匹配_超实用的图像超分辨率重建方法及应用介绍