mysql如何存Emoji表情

如何存Emoji表情
  • 背景
  • 解决方案
  • 一: 如果是自己搭建的数据库,参考如下。
    • 1:先创建数据库,utf8编码
    • 2: 修改mysql 的配置文件 /etc/my.cnf 文件
    • 3:然后把你的表和字段也要支持utf8md4编码
    • 4:修改你连接数据库的方式
  • 二: 如果你用的阿里云的数据库
    • 1:创建utf8mb4数据库
    • 2: 最后你连接数据库的方式如下

背景

我的项目技术栈 flask + sqlalchemy + mysql
在这样的架构下,我想要mysql能存Emoji表情。

解决方案

如果想在数据库存emoji表情需要满足以下几种情况。
1: mysql 数据库要改成utf8md4编码格式,因为这样才能存emoji四个字符的表情。
2: 客户端也要改成utf8md4的编码格式,这里的客户端指的是后端工程师开发的服务器,只是相对于数据库来说是是客户端。其实就是在连接mysql的时候指定一下以什么编码连接mysql数据库。

一: 如果是自己搭建的数据库,参考如下。

1:先创建数据库,utf8编码

CREATE DATABASE  `database name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 1

2: 修改mysql 的配置文件 /etc/my.cnf 文件

[client] default-character-set = utf8mb4

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

[mysql] default-character-set = utf8mb4

3:然后把你的表和字段也要支持utf8md4编码

4:修改你连接数据库的方式

SQLALCHEMY_DATABASE_URI = “mysql://账号:密码@ip:port/数据库名?charset=utf8mb4”

主要在连接后面加上这个编码

?charset=utf8mb4

二: 如果你用的阿里云的数据库

1:创建utf8mb4数据库

在这里插入图片描述
在这里插入图片描述

数据库里的表也要支持utf8md4 当我在阿里创建一个utf8mb4数据库,
然后ORM迁移后就已经数据库里的表就已经是utf8mb4编码了。

2: 最后你连接数据库的方式如下

SQLALCHEMY_DATABASE_URI = “mysql://账号:密码@ip:port/数据库名?charset=utf8mb4”

主要在连接后面加上这个编码

?charset=utf8mb4

参考

https://www.jianshu.com/p/57d544acdc1f

参考阿里的描述

概述 本文主要介绍RDS MySQL如何使用utf8mb4字符集存储emoji表情。

详细信息 阿里云提醒您:

如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

基本原则 如果要实现存储emoji表情到RDS
MySQL实例,需要客户端、到RDS实例的会话连接、RDS实例三个方面统一使用utf8mb4字符集。

客户端:客户端需要保证输出字符串的字符集为utf8mb4。
到RDS实例的会话连接:支持utf8mb4字符集。以常见的JDBC连接为例,需要使用MySQL Connector/J
5.1.13及以上的版本,JDBC的连接串中,建议不配置characterEncoding选项。 RDS实例:在RDS控制台将character_set_server参数设置为utf8mb4,且数据库和表的字符集也要设置为utf8mb4。

修改字符集 如果字符集不符合以上基本原则,请参见RDS MySQL字符集相关说明修改字符集。

说明:由utf8修改为utf8mb4字符集不会影响之后的数据质量,且已经存在的数据也不受影响,但是数据存储空间会有所增加。

适用于云数据库RDS MySQL版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaWeb教务查询系统

一、简介 在教育管理领域,教务管理系统是一个至关重要的工具,它能够有效地协调学校、教师和学生之间的各种活动。我设计了一个基于JavaWeb的教务管理系统,该系统包括三个角色:管理员、教师和学生。管理员拥有课程管理、学生管理、…

Spark重温笔记(五):SparkSQL进阶操作——迭代计算,开窗函数,结合多种数据源,UDF自定义函数

Spark学习笔记 前言:今天是温习 Spark 的第 5 天啦!主要梳理了 SparkSQL 的进阶操作,包括spark结合hive做离线数仓,以及结合mysql,dataframe,以及最为核心的迭代计算逻辑-udf函数等,以及演示了几…

JWT(JSON Web Token)

JSON Web Token 是一种开放标准,用于在网络上安全传输信息的简洁、自包含的方式。它通常被用于身份验证和授权机制。 JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature&#xff…

微软开源项目Garnet:Redis的竞争者还是替代者?

对于开源社区,最近的一大新闻就是Redis宣布从7.4版本开始,将采用Redis源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)的双重许可证,取代原有的BSD三条款许可证。这一变化引发了开发者社…

阿里云子域名配置,且不带端口访问

进入阿里云控制台,创建一个SSL证书 # 域名名称child.domain.com创建完成后,将返回主机记录以及记录值,保存好,用于下一步使用 创建DNS解析 创建DNS的TXT类型解析 选择记录类型:TXT 填写主机记录:_dnsa…

一些常见的与 Vim 相关的文件类型及其描述

配置文件: .vimrc (Unix/Linux) 或 _vimrc (Windows):这是 Vim 的主要配置文件,用户可以在其中设置各种选项、快捷键映射、插件加载等。Vim 在启动时会自动读取这个文件,并根据其中的设置来配置编辑器。init.vim:对于 …

【CSP试题回顾】202104-2-邻域均值(优化)

CSP-202104-2-邻域均值 关键点:二维前缀和数组 详见: 【CSP考题扩展】前缀和/差分练习【CSP考点回顾】二维前缀和数组(代码实现) 解题思路 1.输入和初始化 首先,程序从输入中获取四个整数n(矩阵的大小…

排序(冒泡/快速/归并)

冒泡排序 时间复杂度为 O(n^2) 原理 比较相邻的元素. 如果第一个比第二个大,就交换他们两个.依次比较每一对相邻的元素—>结果 : 最后的元素是这组数中最大的重复上述步骤 , 除了最后一个[]因为最后一个已经是排好序的了(这组数中最大的那个)]持续对越来越少的元素进行如上…

系列学习前端之第 7 章:一文掌握 AJAX

1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML(中文名:阿贾克斯),就是异步的 JS 和 XML。AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。AJAX 可以在浏览器中向服务器发送异步请求…

docker拉取镜像

docker 拉取镜像 命令格式 docker pull 仓库名称[:标签] 从下载过程可以看出: (1)镜像文件是由若干层组成,即:AUFS联合文件系统。这是实现增量保存与更新的基础 (2)下载过程会输出各层镜像的信…

面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch(ES),我了解并有经验。在我之前的公司,我们有一个相对大型的ES集群,以下是该集群的架构和一些调优手段的概述: 1. 集群架构 集群规模:我们的ES集群由15个节点组成&#xff0c…

水果店如何开发自己的微信小程序_新鲜生活,触手可及

水果店微信小程序:新鲜生活,触手可及 在这个快节奏的时代,我们都在追求更高效、更便捷的生活方式。而微信小程序,正是这样一个让生活变得更加轻松便捷的神奇工具。今天,我要向大家介绍的,就是一家独具匠心…

独享IP可以避免被封禁或限制访问的风险

在一些网站或服务中,存在对共享IP的封禁或限制访问的情况,这给用户带来了不便。而使用独享IP可以有效规避这一问题,保障用户正常访问需求。例如,在进行搜索引擎优化、社交媒体营销或广告投放时,独享IP可以确保用户的网…

window下迁移SVN仓库到新的windows服务器

一、背景 一个基于 Windows 的 SVN 服务器,用于管理团队的代码库。该 SVN 仓库托管着公司的软件项目,包括多个分支和版本的代码。我们的团队规模约为 50 人,分布在不同的地理位置,他们都依赖 SVN 仓库来进行代码版本控制和协作开…

LeetCode146:LRU缓存

leetCode:146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#x…

微服务(基础篇-005-Gateway)

目录 Gateway介绍: 为什么需要网关(1) gateway快速入门(2) 断言工厂(3) 过滤器工厂(4) 过滤器工厂介绍及案例(4.1) 默认过滤器&#xff08…

IMac、Chrome、vim、pycharm的常用快捷键和常用开发工具homebrew

mac系统 陌生按键 用惯了windows的uu们(譬如本人)刚开始接触时可能就看不懂以下按键,多看几遍就好了 ⌘ (Command / Cmd) ⌥ (Option) ⌃ (control) ⇧ (shift) ⏏️ (Eject) 《关闭应用程序CommandQ》和《关闭应用界面CommandW》 comman…

C#进阶-反射的详解与应用

一、反射的概念 反射是.NET框架提供的一个功能强大的机制,它允许程序在运行时检查和操作对象的类型信息。通过使用反射,程序可以动态地创建对象、调用方法、访问字段和属性,无需在编译时显式知道类型信息。在.NET中,所有类型的信…

【STL学习】(2)string的模拟实现

前言 本文将模拟实现string的一些常见功能,目的在于加深理解string与回顾类与对象的相关知识。 一、前置知识 string是表示可变长的字符序列的类string的底层是使用动态顺序表存储的string对象不以’\0’字符为终止算长度,而是以size有效字符的个数算长…

华为openGauss数据库全面解读:数据类型一览与实战指南

引言: 华为openGauss数据库作为一款优秀的国产企业级数据库产品,其丰富多样的数据类型设计为多样化的业务场景提供了强大的数据存储与处理能力。本文将深入浅出地介绍openGauss支持的主要数据类型,并辅以实际应用案例,帮助读者更…