沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 基础

    • 数据库基础知识小结
    • NoSQL基础知识小结
    • 字符集详解
      • 什么是字符集?
      • 常见的字符集
        • ASCII 码
        • Unicode
        • UTF-8
        • GBK 和 GB2312
        • BIG5
        • ANSI
      • 在线编码和解码
      • MySQL 字符集
        • 查看支持的字符集
        • 默认字符集
        • 字符集的层次级别
        • 5.x 版本和 8.x 版本都兼容的字符集与排序规则⭐️
    • SQL

  • Mysql

  • Redis

  • 达梦数据库

  • 数据库
  • 基础
沉梦听雨
2023-07-24
目录

字符集详解

# 字符集详解

MySQL 字符编码集中有两套 UTF-8 编码实现:utf8 和 utf8mb4。

如果使用 utf8 的话,存储 emoji 符号和一些比较复杂的汉字、繁体字就会出错。

  • utf8:utf8编码只支持1-3个字节 。 在 utf8 编码中,中文是占 3 个字节,其他数字、英文、符号占一个字节。但 emoji 符号占 4 个字节,一些较复杂的文字、繁体字也是 4 个字节。
  • utf8mb4:UTF-8 的完整实现,正版!最多支持使用 4 个字节表示字符,因此,可以用来存储 emoji 符号。

# 什么是字符集?

字符是各种文字和符号的统称,包括各个国家文字、标点符号、表情、数字等等。

字符集 就是一系列字符的集合(编码规则)。

每个字符在字符集中都有一个唯一的编码,计算机根据这个编码来识别和处理字符。不同的字符集支持不同的字符范围和编码方式。

  • 字符 转换成 二进制数据的过程称为 字符编码
  • 二进制数据 解析成 字符的过程称为 字符解码

# 常见的字符集

# ASCII 码

ASCII(American Standard Code for Information Interchange)是最早的字符集之一,它使用 7 位二进制数表示 128 个字符,包括英文字母、数字、标点符号和控制字符等。ASCII 码是计算机系统最基本的字符集之一,它为文本数据提供了最基本的编码方式。

image

# Unicode

随着计算机技术的发展,对于国际化和多语言支持的需求不断增加,ASCII 码已经不能满足各种语言字符的表示需求。于是,Unicode 字符集应运而生。Unicode 采用更多的位数来表示字符,常见的有 16 位的 UCS-2 和 32 位的 UCS-4。

# UTF-8

UTF-8(Unicode Transformation Format-8)是一种对 Unicode 进行编码的变长字符集,它可以使用 1 到 4 个字节表示一个字符,根据字符的不同范围自动选择合适的编码长度。UTF-8 是目前互联网上广泛使用的字符集之一,它既能表示 ASCII 字符,又能表示任意国家和地区的字符。

# GBK 和 GB2312

GBK 和 GB2312 是中文字符集,用于表示中文字符。GBK 扩展了 GB2312 字符集,支持更多的中文字符,包括繁体字和生僻字。GBK 和 GB2312在中国大陆广泛使用,是中文文本处理的基本字符集。

# BIG5

BIG5 主要针对的是繁体中文,收录了 13000 多个汉字。

# ANSI

ANSI(American National Standards Institute)是一种字符集标准的通用名称,它实际上不是一个具体的字符集,而是指各种不同的字符集标准。在不同的操作系统和编程环境中,ANSI 可能对应不同的字符集,因此在使用 ANSI 字符集时需要注意平台的兼容性。

# 在线编码和解码

utf-8转utf-8、Unicode (UTF-8)转Unicode (UTF-8)、utf-8转utf-8编码 (haomeili.net) (opens new window)

# MySQL 字符集

# 查看支持的字符集

可以通过 SHOW CHARSET 命令来查看

# 默认字符集

在 MySQL5.7 中,默认字符集是 latin1 ;在 MySQL8.0 中,默认字符集是 utf8mb4

# 字符集的层次级别

  • server(MySQL 实例级别)
  • database(库级别)
  • table(表级别)
  • column(字段级别)

优先级从上往下依次增大

# 5.x 版本和 8.x 版本都兼容的字符集与排序规则⭐️

字符集:utf8mb4

排序规则:utf8mb4_general_ci

解析

  1. 字符集:utf8mb4 是 MySQL 5.x 和 8.x 版本都兼容的字符集。它是支持四字节的 UTF-8 编码,可以用于存储包含 Emoji 表情等特殊字符的文本数据。
  2. 排序规则:
    • 在 MySQL 5.x 版本中,默认的排序规则是 utf8mb4_general_ci,
    • 而在 MySQL 8.x 版本中,默认的排序规则是 utf8mb4_0900_ai_ci。
    • 这是因为 MySQL 8.x 引入了新的排序规则算法 utf8mb4_0900_ai_ci,它在一些情况下(例如对特殊字符的排序)表现更为准确和符合语言习惯。

所以,**如果希望在 MySQL 5.x 和 8.x 版本中都兼容,并且不需要新的排序规则算法,可以使用 utf8mb4 字符集和 utf8mb4_general_ci 排序规则。**但如果需要更准确的排序和对特殊字符的支持,可以考虑使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 排序规则。

上次更新: 2024/9/25 11:16:13
NoSQL基础知识小结
SQL语法基础小结

← NoSQL基础知识小结 SQL语法基础小结→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式