表情乱码 mysql_php mysql 存储 IOS Emoji表情失败和乱码问题

感谢伟大的网络,给我们带来了很多有用的信息

然后开始 项目需要给app提供接口,发现IOS开发存储Emoji表情失败,或者乱码,在这里给自己留个记录以及给大家带来一些参考

首先是字符集的问题,mysql字符集大多数使用的是utf8,需要把字符集更换成utf8mb4,因为UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,utf8mb4则扩展到一个字符最多能有4字节,并且兼容utf8

在mysql终端查看下mysql当前版本所支持的字符集,据说mysql 5.5.3版本上才会支持utf8mb4,我没核对;

1 show charset;

1. 修改database,table,column字符集mysql语句如下

# For each database:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE =utf8mb4_unicode_ci;

#For each table:ALTER TABLE table_name CONVERT TO CHARACTER SETutf8mb4 COLLATE utf8mb4_unicode_ci;

#For each column:ALTER TABLE table_name CHANGE column_name column_name VARCHAR(512) CHARACTER SETutf8mb4 COLLATE utf8mb4_unicode_ci;

# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)

2. 修改my.cnf

[client]

default-character-set =utf8mb4[mysql]

default-character-set =utf8mb4[mysqld]

character-set-client-handshake =FALSEcharacter-set-server =utf8mb4

collation-server =utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

3.重启mysql,检查字符集

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

+--------------------------+--------------------+

| Variable_name            | Value              |

+--------------------------+--------------------+

| character_set_client     | utf8mb4            |

| character_set_connection | utf8mb4            |

| character_set_database   | utf8mb4            |

| character_set_filesystem | binary             |

| character_set_results    | utf8mb4            |

| character_set_server     | utf8mb4            |

| character_set_system     | utf8               |

| collation_connection     | utf8mb4_unicode_ci |

| collation_database       | utf8mb4_unicode_ci |

| collation_server         | utf8mb4_unicode_ci |

+--------------------------+--------------------

这样mysql数据库就支持Emoji表情的存储了

如果你的php项目存储Emoji表情会出现乱码,那么把你php连接Mysql数据库的字符编码换成 utf8mb4

另外Mariadb数据库同样可以这样设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值