mysql存储emoji问题

前一段时间,项目中需要在数据库中存储emoji,由于编码格式不对,直接导致数据库报错,后来修改mysql的编码,就解决了

emoji符号实际上是文本,并不是图片,它们仅仅显示为图片

在mysql5.5.3或更高的版本才支持

确定数据库支持存储表情后,可以修改数据库的默认编码,这样以后再建数据库的话,就不用考虑存emoji这个问题了

在mysql 的配置文件 my.cnf 或 my.ini 配置文件中修改如下:

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

重启MySQL,然后使用以下命令查看编码,应该全部为utf8mb4(character_set_filesystem和character_set_system除外):

mysql> show variables like ‘%char%‘;
+--------------------------+--------------------------+
| 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                     |
| character_sets_dir       | /usr/local/mysql-5.7.... |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)

使用命令查看collation设置,应该全部是utf8mb4_general_ci

mysql> show variables like ‘%coll%‘;
+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_general_ci |
| collation_server     | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.01 sec)

如果character_set_database还是为utf8,需要重启服务器。

现在,MySQL就可以正确存储emoji字符了。

但是如果是之前已经建好的数据库怎么办呢?

可以使用 mysql命令

ALTER TABLE 表名 DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;

来更改已有的数据库表的编码

参考地址:https://www.liaoxuefeng.com/article/00145803336427519ae82a6c5b5474682c0c4ba5b47fb33000

时间: 2024-10-25 19:00:42

mysql存储emoji问题的相关文章

mysql 存储 emoji报错( Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F)的解决方案

1.报错原因: mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节. 2.解决办法: 修改mysql的配置文件,windows下的为my.ini(linux下的为my.cnf),修改的内容都一样. [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server

django,mysql存储emoji表情,utf8mb4

今天在做后台的时候发现一个错误: Incorrect string value: '\\xF0\\x9F\\x90\\xA8' for column 'signature' at row 1 发现是参数里面是一个iOS的表情,也就是系统自带的emoji表情. 后台用的是django 1.6,数据库用的是Mysql 5.5.22,缓存用的是redis. 上网了解了一下emoji表情,原来一般的字符包括中文用utf8的话,mysql是用3个字节去存储的,而emoji表情要用4个字节的utf8,也就是

Mysql存储emoji表情的两种方式

最近在做数据迁移,原先有一个字段的类型为clob,迁移后的字段类型为varchar,blob转化成字符串数据后,发现有emoji表情存在,导致数据迁移失败.失败的原因是mysql数据库中设置的utf-8类型是3个字节,而emoji表情的utf-8是4个字节,所以无法传入. 要使mysql能存储emoji表情,需要数据库的版本在5.5以上. 为了解决问题,主要有两种方式: 第一种方式是修改字段的编码. 第二种方式是修改配置文件. 第一种方式:亲测可用 1)修改对应表字段的编码类型 ALTER TA

关于用 MySQL 存储 Emoji

http://www.v2ex.com/t/137724 如果你希望让你的网站或者 App 支持 Emoji,那么在初次设置 MySQL 时,有一些细节你需要知道. Emoji Emoji 字符的特殊之处是,在存储时,需要用到 4 个字节.而 MySQL 中常见的 utf8 字符集的 utf8_general_ci 这个 collate 最大只支持 3 个字节.所以为了能够存储 Emoji,你需要改用 utf8mb4 字符集. 在创建表时,用类似这样的语句: CREATE TABLE `tbl`

用 MySQL 存储 Emoji

如果你希望让你的网站或者 App 支持 Emoji,那么在初次设置 MySQL 时,有一些细节你需要知道. Emoji Emoji 字符的特殊之处是,在存储时,需要用到 4 个字节.而 MySQL 中常见的 utf8 字符集的utf8_general_ci 这个 collate 最大只支持 3 个字节.所以为了能够存储 Emoji,你需要改用 utf8mb4 字符集. 在创建表时,用类似这样的语句: CREATE TABLE `tbl` (...) ENGINE=InnoDB DEFAULT C

mysql存储emoji表情报错的处理方法【更改编码为utf8mb4】

utf-8编码可能2个字节.3个字节.4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符.如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(

mysql存储emoji表情

微信获取的用户昵称nickname中带有emoji表情,转换成字符码后是这种形式“\xF0\x9F\x91\x8D\xE6\x94...”, 直接保存可能出现以下错误 Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'review' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:

微信emoji表情编码 、MySQL 存储 emoji 表情符号字符集

1.把 PHP 连接 MySQL 的字符集 由 utf8 改为 utf8mb4:ThinkPHP框架中,改下 配置文件 /ThinkPHP/Conf/convention.php 的 DB_CHARSET 为 utf8mb4 (默认为 utf8) 2.把 聊天记录表的 聊天内容字段的 字符集改为 utf8mb4_general_ci: 原文地址:https://www.cnblogs.com/gaocy/p/9559410.html

Java在mysql中存储emoji表情

mysql存储emoji表情要使用utf8mb4字符集,这是4字节存储,最低支持版本为5.5.3+,若不是,请升级到较新版本. 修改mysql配置文件 Window目录: mysql/my.ini Ubuntu16.04目录: /etc/mysql/conf.d/mysql.cnf  配置Client /etc/mysql/mysql.conf.d/mysql.cnf  配置Server 其他目录: 一般在etc/mysql/my.cnf 在mysql配置文件添加以下三部分内容: [client