MySQL插入emoji表情失败问题的解决方法
16lz
2021-12-31
前言
之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题。最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常:
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...'
所以在此我们像utf8的数据表插入数据就会报出Incorrect string value
这个错误.
Google一下很容易就找到了解决方案, 具体解决办法是如下:
一、修改数据表的字符集为utf8mb4
这点很简单, 修改语句网上找一大堆, 不过建议重新建表, 使用 mysqldump -uusername -ppassword database_name table_name > table.sql
备份相应数据表, 并修改其中的建表语句的字符集为 utf8mb4 即可, 然后 mysql -uusername -ppassword database_name < table.sql
重新导入sql即可完成修改字符集操作.
二、MySQL数据库版本要5.5.3及以上
网络上所有的文章都说明要MySQL 5.5.3以上的版本才支持utf8mb4, 不过我使用的数据库版本为5.5.18, 最终仍能解决问题, 所以同学们不要急着找运维哥哥升级数据库先, 先试试能不能自己解决问题.
三、修改数据库配置文件/etc/my.cnf并重启mysql服务
主要是修改数据库的默认字符集, 以及连接, 查询的字符集, [Mysql支持emoji 表情符号 升级编码为UTF8MB4][1] 这篇文章有详细的设置方法, [深入Mysql字符集设置][2] 这篇文章有其中设置的各个字符集的作用, 大家可以科普下.
四、升级MySQL Connector到5.1.21及以上
更多相关文章
- android中HttpURLConnection调用getResponseCode()时崩溃 解决方
- Android空引用问题的解决方法——on a null object reference
- android中字符替换成表情
- android读取assets大于1M文件的解决方法
- 几个Android小错误解决方法
- CheckBox android:paddingLeft 不兼容问题解决方法
- android表情Gson EditText TextView
- Android(安卓)-- EditText插入表情
- 在Android中支持表情