mysql如何存储emoji表情

utf8的数据库,存入表情符,会出错

 代码如下 复制代码
Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F...' for column 'content'

错误的解决办法:

 代码如下 复制代码

4 byte Unicode characters aren't yet widely used, so not every application out there fully supports them. MySQL 5.5 works fine with 4 byte characters when properly configured – check if your other components can work with them as well.

Here's a few other things to check out:

Make sure all your tables' default character sets and text fields are converted to utf8mb4, in addition to setting the client & server character sets, e.g. ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4; and so on.

If your data is already in the utf8 character set, it should convert to utf8mb4 in place without any problems. As always, back up your data before trying!

Also make sure your app layer sets its database connections' character set to utf8mb4. Double-check this is actually happening – if you're running an older version of your chosen framework's mysql client library, it may not have been compiled with utf8mb4 support and it won't set the charset properly. If not, you may have to update it or compile it yourself.

When viewing your data through the mysql client, make sure you're on a machine that can display emoji, and run a SET NAMES utf8mb4 before running any queries.

Once every level of your application can support the new characters, you should be able to use them without any corruption.

总结就是,表结构改为支持4字节的unicode,数据库连接也用这个字符集哦,证明是可行的。
如果别的地方不支持,可以考虑去掉这些字符:

 代码如下 复制代码
Since 4-byte UTF-8 sequences always start with the bytes 0xF0-0xF7, the following should work:

$str = preg_replace('/[\xF0-\xF7].../s', '', $str);
Alternatively, you could use preg_replace in UTF-8 mode but this will probably be slower:

$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);
This works because 4-byte UTF-8 sequences are used for code points in the supplementary Unicode planes starting from 0x10000.

时间: 2024-10-30 01:02:40

mysql如何存储emoji表情的相关文章

使MySQL能够存储emoji表情字符的设置教程_Mysql

MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集. utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以能支持更多的字符集. 将Mysql的编码从utf8转换成utf8mb4. 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不支持这个字符集.复制报错 停止MySQL Server服务 修改 my.cnf或者mysql.ini

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情 1. 基本原则 2. 三个条件的说明 2.1 应用客户端 2.2 应用到 RDS MySQL 实例的连接 2.3 RDS 实例配置 3. 通过 set names 命令设置会话字符集 1. 基本原则 如果要实现存储 emoji 表情到 RDS for MySQL 实例,需要应用客户端.到 RDS for MySQL 实例的连接.RDS 实例内部 3 个方面统一使用或者支持 utf8mb4 字符集. 注:关于 utf8

数据库-mysql中用bolb存储emoji表情,单张表查询可以,多表关联查询该字段则为空

问题描述 mysql中用bolb存储emoji表情,单张表查询可以,多表关联查询该字段则为空 现在碰到一个问题,关于emoji表情的,现在mysql中我用bolb存储emoji表情,单张表查询表情可以正常的查询出来,多表关联查询的时候,存emoji表情的字段查询出来为空,求大神指点,该字段我用的是bolb数据类型,数据库,表,都是utf8mb4字符集 解决方案 将查询出来的数组调试输出下,和原始的数据比对,估计是数据编码的错误.

如何在 MySQL 中存储 emoji ?

问题还原 使用 erlang 存储一些特殊字符串到 MySQL 的时候,却没法读出来.经检查,这些字符串的二进制格式如下: <<240,159,152,134,240,159,152,144>> 查看二进制的 unicode 是什么? 14> unicode:characters_to_list(<<240,159,152,134,240,159,152,144>>). [128518,128528] 15> erlang:integer_to_

在不升级 mysql 的情况下直接使用 mysql utf8 存储 超过三个字节的 emoji 表情

由于现在数据库的版本是5.5.2,但是看网上说要直接存储emoji表情,需要升级到5.5.3然后把字符集设置为utf8mb4,但是升级数据库感觉属于敏感操作. 考虑了多久之后直接考虑使用正则来替换,但是emoji表情的unicode码太多了,在网上找了一份代码,还是2年前更新的,想了想还是算了. PHP 版本 最简单的办法就是直接找到接受到的文本中的字符串中4个字节的内容,做rawurlencode编码,再入库.输出的时候再替换回来,然后再用rawurldecode转码回unicode到手机再解

编码-mysql数据库想支持emoji表情可不可以不改数据库的字符集

问题描述 mysql数据库想支持emoji表情可不可以不改数据库的字符集 现在手上有个bug,是ios端的emoji表情插不进数据库的问题,在网上查了很久都说要改数据库的字符集. 可是dba说改库的字符集代价太多还给我回复:mysql的字符集设置有 连接字符集,客户端字符集,默认字符集,表和字段的字符集: 所以只需要把存储emoji表情字符的表或字段字符集改为utf8mb4就可以存储:但是需要读取和存储需要确保连接也指定字符集为utf8mb4: 请确认表或字段是否已修改完全,同时连接配置是否正确

3种方法轻松处理php开发中emoji表情的问题_php技巧

背景 做微信开发的时候就会发现,存储微信昵称必不可少. 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的.把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串.这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了.这要怎么办呢?我来介绍几种方法 解决方案 1.使用utf8mb4字符集 如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf

IOS mysql/Java服务端对emoji表情的支持

问题描述: 对于IOS开发来说,iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题 如果UTF8字符集且是Java服务器的话,当存储含有emoji表情时,会抛出类似如下异常: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1       at com.mysql.jdbc.SQLError.createSQLExc

mysql支持IOS的Emoji表情

原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 解决办法: 将Mysql的编码从utf8转换成utf8mb4 步骤: 1.修改mysql配置文件 my.ini default-character-set=utf8mb4 character-set-server=utf8mb4 2.加入 [client] port=3306 default-character-set=utf8mb4 [mysqld]下加入