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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。

MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也 会不会对已有的utf8编码读取产生任何问题。

一次在做微信二开的项目时,发现保存微信用户信息的nickname时报错,寻找原因发现是有些用户昵称是带有emoji表情符的,并且当时的数据库表属性设置的字符编码还是utf8的,数据库当然会报错。经过网上搜索一些资料,找到了完整的解决方案:

  1. 修改database,table,column字符集:
    ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;    
  2.     编辑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'

  3. 重启mysql服务即可

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 SQL Oracle
对比下不同RDBMS数据库中对字符数据类型处理的差异 - 为什么我们要尽量避免使用CHAR数据类型?
对比下不同RDBMS数据库中对字符数据类型处理的差异 - 为什么我们要尽量避免使用CHAR数据类型?
|
3月前
|
存储 自然语言处理 关系型数据库
👨‍💻如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
👨‍💻如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
98 1
|
6月前
|
存储 小程序 关系型数据库
[记录]springboot+mysql存储emoji问题
[记录]springboot+mysql存储emoji问题
|
9月前
|
XML 关系型数据库 MySQL
Mysql插入emoji表情字符编码错误 Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column ‘comment‘ at r
今天在插入数据时发现emoji表情时数据库报错了,以前从来不会报错的,因为我设计表时从来都是如下设置:
136 0
|
9月前
|
存储 SQL 监控
MySQL面试精选:emoji表情存储不进去?
MySQL面试精选:emoji表情存储不进去?
|
10月前
|
存储 Oracle 关系型数据库
|
11月前
|
存储 关系型数据库 MySQL
Mysql插入emoji表情报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB8'
Mysql插入emoji表情报错java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\xB8'
238 0
|
SQL Oracle 关系型数据库
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
498 0
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
|
SQL 关系型数据库 MySQL
MySQL插入Emoji表情
MySQL插入Emoji表情
MySQL插入Emoji表情
|
存储 小程序 Java
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标
做公司的项目,给微信小程序体验版添加了新的页面,提交测试的时候没有任何效果。上网搜索了解后,知道:若 pages.json 文件发生了变化,尤其是首页路径发生了变化。代码上传成功后,需要在后台手动设置一下首页路径,或者取消体验版,重新生成体验版二维码。
524 0
【笔记11】uniapp点击复制;mysql数据库存储emoji表情;Java 二维码生成;uniapp引入自定义图标