美文网首页ThinkPHP5.0学习记录
Mysql存储emoji表情报错

Mysql存储emoji表情报错

作者: Light413 | 来源:发表于2018-08-27 16:14 被阅读7次

    PHP + MySQL , APP提交的数据包含表情,数据库存储失败!!!

    mysql默认的所占字节数是3个字节的,对于大部分语言来说比如说汉字什么来说是足够的,但是emoji表情有日本文字转化而来,其占了4个字节,所以在存储过程中,会导致无法写入数据库mysql就会出现错误。
    对于mysql5.5以上版本呢,其实支持更大字节的存储,需修改一下数据库的编码方式为utf8mb4

    utf8mb4 是utf8的扩展,utf8mb4兼容utf8字符集,utf8 字符的编码、位置、存储在utf8mb4与utf8字符集里一样的,所以不会对有现有数据带来损坏。

    • 在mysql的安装路径下找到,配置文件:
    Linux系统找my.cfg文件,在windows系统下找my.ini 。
    修改以下两处 
    [mysqld]character-set-server=utf8mb4 
    [mysql] 
    default-character-set=utf8mb4
    重启mysql数据库服务。
    
    • 修改环境变量,将一下都修改成utf8mb4
       1、set character_set_client = utf8mb4;
    
       2、set character_set_connection = utf8mb4;
    
       3、set character_set_database = utf8mb4;
    
       4、set character_set_results = utf8mb4;
    
    • 将已经建好的相关表也转换成utf8mb4
    执行命令:
    alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名)
    

    ok,客户端不需要任何修改,再次提交数据表情一切正常。

    相关文章

      网友评论

        本文标题:Mysql存储emoji表情报错

        本文链接:https://www.haomeiwen.com/subject/ymctwftx.html