1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php 微信表情存储 emoji表情存储到数据库的方法

php 微信表情存储 emoji表情存储到数据库的方法

时间:2019-09-25 02:12:18

相关推荐

php 微信表情存储 emoji表情存储到数据库的方法

方案1:修改数据库编码

为什么我们设置表的的字符类型为utf8却不能存放emoji呢?

原来utf8可能是2或3或4个字节,而mysql的utf8是3个字节,存放一个emoji是需要4个字节的,自然不够。

Mysql数据库在5.5.3之后开始支持utf8mb4字符集,所以mysql版本是5.5.3+的都可以设置让数据库存储Emoji表情,如果你的应用有移动端的,最好一开始设计数据库的时候就使用utf8mb4字符集,当然没用的也可以通过如下方式修改:

编辑mysql配置文件

vim /etc/f

添加下面代码

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

在mysql中执行以下命令修改环境变量

set character_set_client = utf8mb4;

set character_set_connection = utf8mb4;

set character_set_database = utf8mb4;

set character_set_results = utf8mb4;

set character_set_server = utf8mb4;

查看是否修改成功,执行如下sql语句

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

修改已经建立表的字符集

alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin;

至此数据库的配置就完成了,在代码连接数据库之后还需要执行

SET names utf8mb4

这样就可以自此 Emoji 表情了。

方案2:转义emoji表情

如果嫌上述方案麻烦,还要操作数据库最初的类型。那么这种方法适合你。

原理:转义成字符串放入到数据库,使用的时候反转义可以直接转义成表情,再把内容传进去就。

//对emoji表情转义

function emoji_encode($str){

$strEncode = '';

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

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

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

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

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

}else{

$strEncode .= $_tmpStr;

}

}

return $strEncode;

}

//对emoji表情转反义

function emoji_decode($str){

$strDecode = preg_replace_callback('|\[\[EMOJI:(.*?)\]\]|', function($matches){

return rawurldecode($matches[1]);

}, $str);

return $strDecode;

}

文章参考:

让你的网站支持 Emoji (/a/1190000003074856)

如何让emoji存放到数据库中 (/u011957758/article/details/53074205)

版权声明:本文采用署名-非商业性使用-相同方式共享(CC BY-NC-SA 3.0 CN)国际许可协议进行许可,转载请注明作者及出处。

本文标题:emoji表情存储到数据库的方法

本文链接:/sochishun/p/7755354.html

本文作者:SoChishun (邮箱:14507247# | 博客:/sochishun/)

发表日期:10月30日

PHP开发中涉及到emoji表情的几种处理方法

最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...

&lbrack;转&rsqb;PHP开发中涉及到emoji表情的三种处理方法

最近几个月做微信开发比较多,存储微信昵称必不可少,可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一 ...

mysql中emoji表情存储

mysql中emoji表情存储 背景 在mysql 5.7.19,创建的数据库默认选择的编码是utf8 -- UTF-8 Unicode,因此字段默认的编码为utf-8,但在项目开发中存在一个需求:在 ...

mysql存储emoji表情报错的处理方法【更改编码为utf8mb4】

utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符.如果直接往采用utf-8编码的数据库中插入表情数据,Java程 ...

java emoji表情存储解决方案

1.问题产生情况 我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了. 2. ...

MySQL插入emoji表情失败问题的解决方法

前言 之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题.最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常: Incorrect string v ...

C&num;接收emoji表情存到sqlserver数据库

1.将就的方法已找到,在保存前,Emoji表情字符串进行utf-8编码,然后写入数据表的nvarchar(max)字段,取出时再进行解码即可. c#的写法如下: 写入数据表前编码: string sH ...

PHP开发中涉及到emoji表情的几种处理方法!

emoji表情 处理 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字 ...

mysql不支持emoji表情的问题的解决方法

最近财神圈项目集成微信登录功能的过程中,当保存用户有昵称含有表情符号时后台服务抛出异常,原来是数据库默认字符集不支持emoji表情字符.找到问题的原因后,因为之前也没有遇到过这样的问题,也没思路,迅速 ...

随机推荐

Coolpy使用教程

---恢复内容开始--- Coolpy使用教程 1.硬件:arduino+ Ethernet Shield w5100 2.下载硬件rom,然后将rom烧进arduino. (下载地址)http:// ...

drawable 另外一种形式dimens&period;xml

常见的Drawable,放置默认drawable一系列目录,有时候会发现drawable找不到的情况,其实还可以放另外一个目录下 values------->>dimens.xml &lt ...

nginx 安装启动

[root@localhost ~]# wget /download/nginx-0.7.67.tar.gz ---09-24 14:48:12-- http: ...

mysql优化sql语句的方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

使用163&period;com邮箱发送邮件

不要直接使用登录的密码,而是用配置中的授权码做为密码

spring中集成hibernate

1.hibernate框架是什么? (1)hibernate对jdbc进行的封装 (2)开源的轻量级框架. 2.hibernate思想:ORM(对象关系映射) (1)让实体类和数据库中的表一一对应(表 ...

学习excel的使用技巧复制一列文本成新列去重

学习excel的使用技巧复制一列文本成新列去重 其实比较简单的技巧 知道了就会 不知道就比较麻烦 直接复制到一列 找到 数据选项 删除重复项

python 之 XML的基本应用总结

1.XML 的特征:xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标 ...

Spring注解详解&commat;Repository、&commat;Component、&commat;Service 和 &commat;Constroller

概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

Java虚拟机18:Java对象大小、对象内存布局及锁状态变化

一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。