全面了解mysql中utf8和utf8mb4的区别

当我们在使用MySQL数据库的时候,经常会涉及到字符集的问题。在MySQL中,常用的字符集有UTF-8和UTF-8MB4两种,那么这两者之间有哪些区别呢?

一、UTF-8和UTF-8MB4的简单介绍

UTF-8和UTF-8MB4都是用来表示Unicode字符集的字符集,其中UTF-8是由1~4个字节编码组成的,而UTF-8MB4是由1~4个字节编码组成的超集。

二、UTF-8和UTF-8MB4的区别

UTF-8最多只能表示3个字节的Unicode字符,而UTF-8MB4则可以表示4个字节的Unicode字符。换句话说,如果你需要存储4个字节的Unicode字符,则必须使用UTF-8MB4字符集。

举个例子,如果你要存储某些表情符号,例如?(Unicode字符编码为U+1F60A),则需要使用UTF-8MB4字符集。因为这个字符需要用4个字节来进行编码,而UTF-8字符集最多只能表示3个字节的字符。

再举个例子,如果你有一个包含Emoji表情的字符串,例如“Hello, ? how are you?”,则如果你使用UTF-8字符集进行存储,则会将这个表情符号存储为乱码或转换成问号;而如果你使用UTF-8MB4字符集进行存储,则可以正确地保存这个表情符号。

三、设置MySQL中的字符集

在MySQL中,可以通过以下步骤来设置字符集:

1. 查看当前字符集设置

show variables like '%character_set%';

2. 修改MySQL服务器的默认字符集

在MySQL的配置文件(通常为my.cnf或my.ini)中,可以修改以下两个参数来设置MySQL服务器的默认字符集:

[client]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4

3. 修改已有数据库的字符集

如果要修改已有数据库的字符集,则需要执行以下命令:

ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

4. 修改已有表的字符集

如果要修改已有表的字符集,则需要执行以下命令:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

四、总结

  • UTF-8和UTF-8MB4都是用来表示Unicode字符集的字符集。
  • UTF-8最多只能表示3个字节的Unicode字符,而UTF-8MB4则可以表示4个字节的Unicode字符。
  • 如果需要存储4个字节的Unicode字符,必须使用UTF-8MB4字符集。
  • 在MySQL中,可以通过修改配置文件或执行相应命令来设置字符集。

示例1:

假设我们有一个表,其中包含一个字段comment,我们想要将其中的内容转换成UTF-8MB4字符集。

首先要确保当前的服务器字符集是UTF-8MB4,查看当前字符集的方式是执行以下命令:

show variables like '%character_set%';

然后可以通过以下命令来修改该表的字符集:

ALTER TABLE comment_table MODIFY comment VARCHAR(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

示例2:

假设我们要保存一个包含Emoji表情的字符串,例如“Hello, ? how are you?”,如果使用UTF-8字符集进行存储,则会将这个表情符号存储为乱码或转换成问号;而如果使用UTF-8MB4字符集进行存储,则可以正确地保存这个表情符号。因此,我们可以将当前数据库的字符集修改为UTF-8MB4来存储这个字符串。

可以通过以下命令来修改数据库的字符集:

ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改完成后,针对该表中的字段内容存储就可以使用UTF-8MB4字符集了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:全面了解mysql中utf8和utf8mb4的区别 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Oracle 日期的一些简单使用

    以下是关于“Oracle 日期的一些简单使用”的完整攻略: 日期类型 Oracle中,日期类型包含DATE类型和TOMESTAMP类型。DATE类型日期范围从公元前4712年1月1日到公元9999年12月31日,精度为秒;TIMESTAMP类型日期范围更大,精度为纳秒。 日期格式 在Oracle中,日期格式可以有多种方式表示,常用的格式包括: -YYYY-M…

    database 2023年5月21日
    00
  • oracle数据库中sql%notfound的用法详解

    Oracle数据库中SQL%NOTFOUND的用法详解 引言 在操作Oracle数据库时,SQL%NOTFOUND是一个常用的关键字,它通常用于检查SQL语句执行操作是否成功。在本文中,我们将详细讲解这个关键字的用法。 什么是SQL%NOTFOUND SQL%NOTFOUND是Oracle数据库中的内置一个关键字,在SQL执行完毕后会返回一个布尔值,并表示该…

    database 2023年5月21日
    00
  • Windows MySQL8.0安装出错解决方案(Start Server 失败)

    1、先删除之前安装出错的MySQL cmd—->切换到C:\Program Files\MySQL\MySQL Server 8.0\bin(mysql默认安装路径) 输入命令:mysqld –remove mysql 再输入命令:mysqld –remove mysql80   2、初始化设置 输入:mysqld –initialize-i…

    MySQL 2023年4月12日
    00
  • SQL Function 自定义函数详解

    SQL Function 自定义函数详解 什么是SQL Function? SQL Function是SQL语言中的自定义函数。它是由一系列SQL语句组成的、可重用的子程序,用来完成特定的功能。SQL Function可以被其他SQL语句调用,也可以作为数据库对象进行管理。 创建SQL Function 创建SQL Function的语法如下所示: CREA…

    database 2023年5月21日
    00
  • php redis 操作手册

    本篇文章给大家分享的内容是关于php redis 操作手册,有着一定的参考价值,有需要的朋友可以参考一下redis手册推荐:   redis中文手册下载地址:http://www.php.cn/xiazai/shouce/54 redis中文在线手册:http://www.php.cn/course/49.html String 类型操作 string是re…

    Redis 2023年4月13日
    00
  • 如何使用Python实现数据库中数据的去重?

    以下是使用Python实现数据库中数据去重的完整攻略。 数据库中数据去重简介 在数据库中,数据去重是指删除重复的数据行。在Python中,可以使用pymysql库实现数据库中去重。 步骤1:连接到数据库 在Python中,可以使用pymysql库连接到MySQL数据库。以下是连接到MySQL数据库的基语法: import pymysql db = pymys…

    python 2023年5月12日
    00
  • 关于mysql中时间日期类型和字符串类型的选择

    首先,需要了解MySQL中的时间日期和字符串类型分别是什么。 时间日期类型包括: DATE: 日期类型,允许的范围为’1000-01-01’到’9999-12-31’。 TIME: 时间类型,以’HH:MM:SS’的格式存储,范围为’-838:59:59’到’838:59:59’。 DATETIME: 日期和时间类型,以’YYYY-MM-DD HH:MM:S…

    database 2023年5月22日
    00
  • 一次现场mysql重复记录数据的排查处理实战记录

    一次现场mysql重复记录数据的排查处理实战记录 背景 在网站运行过程中,我们发现有部分数据出现了重复记录的情况,为了解决这个问题,我们进行了一次现场的mysql重复记录数据的排查处理。 排查过程 1.获取重复记录数据 首先,我们需要获取出现重复记录的数据,可以使用如下SQL语句: SELECT a.* FROM mytable a JOIN ( SELEC…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部