在 MySQL 中 utf8mb4 和 utf8mb3 两种 UTF-8 编码的字符集主要区别

在 MySQL 中,utf8mb4utf8mb3 是两种 UTF-8 编码的字符集,它们的主要区别如下:
1. 支持的字符范围不同
utf8mb3:
原来的 UTF-8 编码实现,支持最多 3 个字节的字符。
无法存储超出基本多语言平面 (BMP) 的 Unicode 字符(U+10000 至 U+10FFFF),例如某些表情符号和特殊的语言字符。
主要用于存储常规的语言字符,例如大部分西方语言的字符和中日韩文字。
utf8mb4:
完整实现了 UTF-8 编码,支持最多 4 个字节的字符。
可存储 BMP 范围以外的字符,例如表情符号、部分古文字及某些生僻汉字。
2. 默认字符集变化
MySQL 8.0 中,utf8mb4 已成为默认的 UTF-8 编码字符集,utf8mb3 被标记为 弃用(deprecated)。因此,在新版本中建议使用 utf8mb4 以保证更好的兼容性。
3. 存储空间不同
utf8mb3:每个字符最多占用 3 个字节。
utf8mb4:每个字符最多占用 4 个字节。
如果表中有大量 4 字节字符,可能会导致表的存储空间增加。
4. 迁移和兼容性
如果当前数据库使用的是 utf8mb3,迁移到 utf8mb4 时需要特别注意:表字段类型可能需要调整(如 VARCHAR 的长度)。
一些字符可能需要重新编码。
MySQL 索引长度受限(最大 767 字节,InnoDB 的索引长度限制),在使用 utf8mb4 时,索引长度需要重新计算。
5. 选择建议
优先使用 utf8mb4:支持更广泛的字符集,尤其是在需要存储表情符号或特殊字符的场景下。
仅在兼容性需求或存储限制的特殊情况下使用 utf8mb3
示例
创建 utf8mb4 字符集表:

CREATE TABLE example (
    id INT AUTO_INCREMENT PRIMARY KEY,
    text_column VARCHAR(255) CHARACTER SET utf8mb4
);

如果您正在使用旧版本的 MySQL 并计划升级,建议尽快迁移到 utf8mb4,以确保数据库能够处理所有 Unicode 字符。

发布者:myrgd,转载请注明出处:https://www.object-c.cn/5064

Like (0)
Previous 2024年12月3日 上午10:41
Next 2024年12月3日 下午12:34

相关推荐

  • 在 MySQL 中 ORDER BY和HAVING用于数据查询和处理

    在 MySQL 中,ORDER BY和HAVING是用于数据查询和处理的两个重要子句,通常与SELECT语句一起使用,以下是它们的具体使用方法: ORDER BY子句 其中,column1、column2等是要排序的列名。ASC表示升序排序(默认),DESC表示降序排序。 多列排序示例:如果要先按照部门编号升序排序,再按照工资降序排序,可以这样写: 按表达式…

    2024年12月15日
    00
  • 在安装Docker时,执行yum install -y yum-utils 报错的解决方法

    在安装 Docker 时,如果执行 yum install -y yum-utils 报错,可能是由于以下原因之一: 解决方法1. 检查 Yum 源配置确保您的系统配置了可用的 Yum 源。使用以下命令检查: 如果列表为空或不可用,重新配置一个有效的源(例如阿里云、腾讯云)。 替换为阿里云源(以 CentOS 7 为例): 2. 安装 EPEL 仓库yum-…

    2024年11月27日
    00
  • 2024款拯救者Y7000p 安装ubuntu20.04无wifi问题?

    在安装 Ubuntu 20.04 后,如果你的 联想拯救者 Y7000P 2024 款 出现无线网络(WiFi)不可用的问题,通常是由于 WiFi 驱动程序不兼容或未正确加载。以下是详细的解决步骤: 一、问题分析 二、解决步骤 1. 检查 WiFi 网卡信息 通过以下命令确定网卡型号: 输出示例: 注意: 请记录网卡型号(如 Intel Wi-Fi 6 AX…

    2024年11月22日
    00
  • Oracle中RegExp_Like 正则表达式函数的基本用法

    在 Oracle 数据库中,REGEXP_LIKE 是一个用于匹配正则表达式的函数。它通常用于检查一个字符串是否符合某个正则表达式的模式。它是 Oracle 正则表达式功能的一部分,允许你在 SQL 查询中使用正则表达式进行数据验证或过滤。 语法 示例 1. 基本使用 检查字符串是否符合给定的正则表达式模式。 此查询将查找 column_name 中仅包含字…

    2024年11月23日
    00
  • Docker 部署 Navidrome 服务器与远程访问听歌的教程

    Navidrome 是一个轻量级、功能强大的音乐流媒体服务器,可以通过 Docker 容器方便地部署。本教程涵盖从本地部署到远程访问的详细步骤。 一、环境准备 1. 安装 Docker 和 Docker Compose 在服务器(或本地机器)上安装 Docker 和 Docker Compose。 安装 Docker Ubuntu 示例: CentOS 示例…

    2024年11月22日
    00
  • Redis 一个高性能的内存数据存储系统

    Redis 缓存详解 Redis 是一个高性能的内存数据存储系统,广泛用于缓存和会话存储。它支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),使其非常适合用于缓存策略的实现。下面将详细解释 Redis 缓存 中常见的问题和解决方案,涵盖性能优化、缓存失效、缓存穿透、缓存雪崩、缓存击穿等常见缓存问题。 1. 缓存穿透 缓存穿透 指的是查询的数据根本不…

    2024年11月23日
    00
  • 最新 pragma solidity 0 . 5 . 10 报错原因解决

    pragma solidity 0.5.10 会报错的原因通常与当前使用的 Solidity 编译器版本不支持该指定版本的语法有关。要解决此问题,需要确保使用正确的编译器版本或调整代码中的版本声明。 问题分析指定的版本过旧: Solidity 0.5.10 是较旧的版本,而现代的工具链(如 Truffle 或 Hardhat)可能默认安装更新版本的编译器。不…

    2024年11月27日
    00
  • XiYan-SQL 是一种多生成器集成的 Text-to-SQL框架,专注于将自然语言查询转换为结构化查询语言

    XiYan-SQL 是一种多生成器集成的 Text-to-SQL(文本转 SQL)框架,专注于将自然语言查询转换为结构化查询语言(SQL),从而高效地与数据库交互。以下是该框架的主要特点、技术原理及其应用场景的解析: 1. XiYan-SQL 的核心特点 2. 核心技术原理 3. 应用场景 4. XiYan-SQL 的优势 5. 示例 输入: 自然语言查询:…

    2024年12月5日
    00
  • 实现 Qwen2.5-7B-Instruct 模型在本地部署并结合 vLLM 推理加速和 Gradio 搭建前端界面

    要实现 Qwen2.5-7B-Instruct 模型在本地部署并结合 vLLM 推理加速和 Gradio 搭建前端界面,以下是详细步骤: 1. 环境准备 2. 模型加载与配置 通过 Hugging Face Transformers 加载 Qwen2.5-7B-Instruct 模型: 3. 推理加速 4. 前端界面部署 通过 Gradio 创建简洁的用户界…

    2024年11月26日
    00
  • Redis 实现分布式锁详解

    分布式锁用于解决分布式系统中多个进程或线程同时访问共享资源时的数据一致性问题。Redis 是实现分布式锁的一个高效工具,因为其性能高、支持单线程操作以及丰富的原子操作。以下是 Redis 实现分布式锁的完整教程。 一、分布式锁的基本要求 二、使用 Redis 实现分布式锁 1. 加锁(SET 命令实现原子操作) Redis 提供的 SET 命令可以用来实现分…

    2024年11月23日
    00
  • Apache Flink 分布式流处理框架中API的使用部分

    Apache Flink 是一个分布式流处理框架,支持批处理和流处理。在 Flink 中,API 是核心部分,允许用户定义数据流处理逻辑、配置作业并执行操作。Flink 提供了多种 API 来满足不同的需求,包括 DataStream API、DataSet API(批处理 API)、Table API 和 SQL API。1. Flink DataStre…

    2024年11月29日
    00
  • 远程访问 VMware ESXi 主机的方法

    远程访问 VMware ESXi 主机可以通过以下几种方式实现。具体方法取决于你的网络环境和目标需求,例如是否有公网 IP,是否需要加密传输等。以下是详细教程: 1. 基于公网 IP 的直接访问 1.1 适用场景 1.2 操作步骤 2. 使用 VPN 隧道访问 2.1 适用场景 2.2 操作步骤 3. 配置跳板机访问 3.1 适用场景 3.2 操作步骤 远程…

    2024年11月24日
    00
  • 在使用 Kettle 9.1 连接 MySQL 时,遇到错误提示 Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed.

    在使用 Kettle 9.1 连接 MySQL 时,遇到错误提示 Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. 通常是由于以下几个原因导致的: 1. MySQL 驱动未正确配置Kettle 需要…

    2024年11月27日
    00
  • 在 .NET 8 框架中使用 Web API 项目并通过引用 SqlSugar ORM 来操作数据库

    在 .NET 8 框架中使用 Web API 项目并通过引用 SqlSugar ORM 来操作数据库,可以遵循以下步骤: 1. 准备工作确保已安装 .NET 8 SDK 和 SqlSugar NuGet 包。创建或打开现有的 Web Core API 项目。安装 SqlSugar NuGet 包: 2. 配置 SqlSugar在 Web API 项目中配置 …

    2024年11月27日
    00
  • STM32 的串口(RS485)数据收发通信模式

    STM32 的串口(RS485)数据收发需要使用 RS485 协议,这是一种常用于工业设备和长距离通信的串行通讯标准。RS485 支持半双工通信,即数据可以在同一线路上进行收发。STM32 支持通过 UART 串口来配置 RS485 模式,利用硬件流控制进行数据收发。以下是实现 STM32 与 RS485 数据收发的基本步骤。 1. 硬件连接 RS485 与…

    2024年11月25日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信