mysql数据库怎么存入emoji表情,更改utf8mb4后为什么出现全是问号

在项目中遇到有人存emoji表情,出现如下错误:

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94‘ for column ‘name‘ at row 1

解决方法:

第一步:

修改mysql配置文件my.cnf(windows为my.ini,linux为my.cnf)

my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect=‘SET NAMES utf8mb4‘

第二步:

重启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 |
+--------------------------+--------------------+
---------------------
作者:Hank涵
来源:CSDN
原文:https://blog.csdn.net/a445849497/article/details/72973352
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/phpfangzhan/p/10704774.html

时间: 2024-10-06 16:04:52

mysql数据库怎么存入emoji表情,更改utf8mb4后为什么出现全是问号的相关文章

让Java后台MySQL数据库能够支持emoji表情的方法

千万不要相信 设置Java的数据库连接,将characterEncoding去掉,然后保证mysql connector版本高于5.1.13,就OK了 更不要相信 navicat查数据库看到记录是“?” 上面 的"?"在前端展示时是正常的 这样做的后果只能是自己环境调试过滤了,但是部署到例如阿里云服务器上后直接程序莫名其妙的查询不出结果了 如果表情不是必须的,建议替换掉再插入数据库

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,也就是

Flask项目中向Mysql存入Emoji表情引起的Bug

Bug背景 之前在写Flask入门项目Flask Mega项目的时候,一直都是用SQLite,后面切换到Mysql数据库发现在存入一些EMOJI表情符号的时候,会出现如下的报错. Bug解决思路 刚开始觉得应该是数据库的编码的问题,因为之前也遇到数据库存入特殊符号的时候发生报错.那先查看服务器上面的数据库编码格式. show variables like '%char%'; 通过查看数据库编码发现都是utf8格式.然后查阅有关的资料,以及翻阅之前做过的笔记发现,Mysql中的utf8编码格式最多

如何在mysql数据库中保存emoji特殊字符

MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也 会不会对已有的utf8编码读取产生任何问题. 做微信小程序的项目时,发现保存微信用户信息的nickname时报错,寻找原因发现是有些用户昵称是带有emoji表情符的,并且当时的数据库表属性设置的字符编码还是utf8的,数据库当然会报错.经过网上搜索一些资料,找

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]下加入

【emoji表情】阿里云数据库RDS支持emoji表情

前言 由于最近几年移动App的兴起,手机自带表情作为用户输入的方式开始流行. 但是emoji表情作为一种特殊的编码方式,之前的数据库字符编码不能正常显示. 解决 在mysql5.5之后的版本,utf8mb4的编码方式解决了emoji表情和生僻字的编码问题. 下面整理下为了兼容emoji表情,我们在数据库服务上做出的修改. 数据库字符集 也就是在创建数据库的时候选择的支持字符集,由于创建之后这项不能进行修改,所以只好重新创建了一个数据库.QAQ 参数设置 这里还需要修改RDS实例的参数设置,将ch

使用Python向MySQL数据库中存入json类型数据

0.说明 因为出于个人项目的需要,获取到的数据都是json类型的,并且都要存入MySQL数据库中,因为json类型数据不像一般的文本数据,所以在存入MySQL时需要注意的问题很多. 在网上找了很多方法,整理了一下比较实用可靠的,总结下来就是下面的过程: MySQL表中需要保证存储json数据的列类型为BLOB: 使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义: 查询数据时,将结果使用json.loads就能够得到原来的Python数据类型: 下面就来

Mysql数据库InnoDB表和MyISAM表混用后,事务回滚测试。

测试环境CENTOS7.3+MYSQL5.7 一张表使用InnoDB引擎,表名称 innodb_test 另外一张表使用MyISAM引擎,表名称 innodb_test 在事务操作的时候,看看到底会发生什么情况. 表结构相同只有3个字段id,name, money+-------+---------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----

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

感谢伟大的网络,给我们带来了很多有用的信息 然后开始 项目需要给app提供接口,发现IOS开发存储Emoji表情失败,或者乱码,在这里给自己留个记录以及给大家带来一些参考 首先是字符集的问题,mysql字符集大多数使用的是utf8,需要把字符集更换成utf8mb4,因为UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,utf8mb4则扩展到一个字符最多能有4字节,并且兼容utf8 在mysql终端查看下mysql当前版本所支持的字符集,