如何将emoji表情存放到mysql数据库中

昨晚在爬取猫眼电影评论时在将评论信息插入到数据库中时出现问题,总是在插入一条数据时就会报错:

看着应该时字符编码的问题,比如新建的数据库新建的表,默认字符编码是:Latin1,

这种编码是无法插入中文的。此时将数据库字符集和表的字符集编码改为utf8,然后重启mysql就可以插入中文了。

但是高潮来了:我的数据库和表字符集编码已经是utf8了,是可以插入中文的,但为什么还是报这种错误i呢?

接下来我直接将这一夜的评论在本地打开查看了一番,发现了一个小东西:

就是上边那张小脸:看来是emoji表情在搞事情啊:

首先说一下utf8和utf8mb4:

  UTF-8:   Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM. 是一种解决国际字符串的一种多字节编码,对英文使用8bit(一个字节)

中文使用24bit(三个字节)来进行编码。UTF-8包含所有国家需要用到的字符,是国际编码,并且UTF-8编码的文字可以在各国支持UTF-8字符集的浏览器上显示,

如果文字使用UTF-8编码,那么外国人的英文IE上也能显示中文,无需下载IE中文包。

  UTF8MB4:  Mysql在5.53版本之后增加了utf8mb4编码, mb4即most bytes 4,专门用来兼容四个字节即以上的unicode

 

这里的一个emoji表情占4个字节,所以我的库与表使用的是utf8,所以就会报错,所以只需要将utf8改成utf8mb4,然后重启mysql即可。

 ps:  命令:

  查看当前数据库字符编码:

  

  查看指定数据库编码:

  

  查看指定表编码:

  

  更改指定数据库/表编码:

  

  

   修改指定字段字符集编码:

  

 

想了解更多Python关于爬虫、数据分析的内容,欢迎大家关注我的微信公众号:悟道Python

  

  

 

posted @ 2018-10-16 11:35  宋讼颂  阅读(10940)  评论(0编辑  收藏  举报