一.常用字符编码

1.ASCII编码

用一个字节表示一个字符

2.ANSI编码

每个国家为了显示本国的语言而对ASCII码进行了拓展

用两个字节表示一个汉字,中国的ANSI编码是GB2312编码(简体),日本的ANSI编码是JIS编码,台湾的ANSI编码是BIG5编码(繁体)

3.GBK编码

对GB2312进行的扩展,用来显示罕见的、古汉语的汉字。

4.Unicode编码

用四字节表示一个字符

5.UTF-8编码

国际通用字符库,涵盖了地球上人类的所有的语言文字

可以识别字符,如果字符是简单的字母,就用一字节存储,如果是复杂的生僻字,就用四字节存储

utf8不支持表情符号emoji,utf8mb4支持表情符号emoji

二.字符编码全局设置

1.原因

用户在向网站服务端进行数据信息存储时,由于数据库服务系统默认的字符编码设置问题,可能会导致出现字符乱码,为了能更准确地识别数据库中的中文字符信息,需要对数据库服务配置文件中的默认字符编码设置进行调整

2.显示所有可用的字符集

show charset;

3.查询 MySQL 中所有包含“char”关键字的系统变量(通常是与字符集和字符编码相关的系统变量)

show variables like '%char%';

注意这些是否是一样的

4.在/etc目录将数据库服务配置文件进行备份

cp my.cnf my.cnf.bak

5.修改配置文件

vim /etc/my.cnf

在[mysqld]区域写入

character-set-server=gbk

6.重启以重新加载配置文件

 systemctl restart mysqld

7.再次查看

show variables like '%char%';

8.查看新创建的数据库的字符集

show databases;
create database yong65535;
show create database yong65535;

9.编辑修改客户配置文件参数信息

client.cnf是客户端配置文件信息

vim /etc/my.cnf

在[client]区域内写入

default-character-set=gbk

10.重启和查看

systemctl restart mysqld
show variables like '%char%';

show variables like 'character_set_%';

11.最后修改回去

vim /etc/my.cnf

三.字符编码局部设置

1.指定某一数据库的字符集

在创建库时指定字符集就行了

如创建qwq数据库,指定字符集为gbk

create database qwq charset gbk;

查看该数据库信息

show create database qwq;

2.指定数据库中某一个表的字符集

在创建表时指定字符集就可以了

先进入qwq数据库

use qwq;

3.查看新创建的表优先使用默认全局的字符集还是优先使用这一数据库的字符集

创建t1表,该表有表项id,数据类型为int

create table t1(id int);
查t1表信息

show create table t1;
 

由此可见优先继承的是数据库的字符集

4.创建t2表,该表有表项id类型为int,且指定使用的字符集为utf8mb4;

create table t2(id int) charset utf8mb4;

查看表t2内容
show create table t2;

四.参数信息、解释说明及其关系图

1.参数信息及其解释说明

character_set_client:用来设置客户端默认使用的字符集

character_set_connection:用来设置连接数据库时默认的字符集

character_set_database:用来设置创建数据库默认的编码格式

character_set_filesystem:文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把character_set_client转换character_set_filesystem,默认binary是不做任何转换

character_set_results:数据库给客户端返回时默认使用的编码格式

character_set_server:服务器安装时指定的默认编码格式,这个变量建议由系统管理,不要认为定义

character_set_system:数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是存储系统元数据的编码格式

character_sets_dir:这个变量是字符集安装的目录

2.关系图

举例说明:

SET character_set_client = gbk;
SET character_set_connection = utf8mb4;
SET character_set_results = latin1;

内部操作字符集=utf8mb4

过程:

客户端字符串(中文) 
   --用gbk编码--> 字节流(gbk)
       ↓
服务器用character_set_client=gbk解码成字符
       ↓
服务器用character_set_connection=utf8mb4编码字符用于SQL执行
       ↓
插入时转为表字符集utf8mb4编码写入磁盘
       ↓
查询时从磁盘取utf8mb4字节流
       ↓
转成字符序列
       ↓
根据character_set_results=latin1编码成latin1字节流返回客户端
       ↓
客户端用latin1解码成字符显示

3.注意事项

客户端字符集设置要和服务器对应,避免字符集不匹配导致乱码,一般建议客户端、连接、结果、表字段都统一用utf8mb4,以减少字符集转换复杂度和乱码风险

五.编码排序(校对)规则

根据设置的排序规则不同,查询信息时,影像数据信息的查询输出和排序效果

1.所有已用的字符排序规则

 show collation;

2.排序规则后缀及其解释

后缀含义及解释
_ciCase Insensitive(不区分大小写)
字符比较时忽略大小写,‘a’与‘A’视为相同。是最常用的后缀。
_csCase Sensitive(区分大小写)
字符比较时区分大小写,‘a’和‘A’被视为不同字符。
_binBinary(二进制)
按照字符的二进制值(ASCII码或Unicode码)逐字节比较,区分大小写且不考虑语言规则。速度快,精确比较。
_aiAccent Insensitive(不区分重音符号)
忽略字符的重音符号(例如é和e视为相同),通常和ci结合使用,如utf8mb4_0900_ai_ci
_asAccent Sensitive(区分重音符号)
区分带重音符号和不带重音符号的字符。
0900代表使用Unicode Collation Algorithm版本 9.0.0的排序规则。
比如utf8mb4_0900_ai_ci,这是MySQL 8.0及以后版本引入的新排序规则,支持更准确的Unicode排序。

3.对库设置校对规则

在创建数据库时指定

create database qoq charset utf8 collate utf8_general_mysql500_ci;

查看这个数据库信息

show create database qoq;

4.对表设置校对规则

create table t1 (id int) charset utf8 collate utf8_german2_ci;

5.演示校对规则不同的效果

创建三个表,有表项info,char(3)类型,utf8mb4编码,排序规则各不相同

区分大小写

CREATE TABLE t3 (info CHAR(3)) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

不区分大小写

CREATE TABLE t4 (info CHAR(3)) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;

ascii码存储

CREATE TABLE t5 (info CHAR(3)) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

向三个表插入相同的数据

insert into t3 values('a'),('A'),('b'),('B'),('c'),('C');

insert into t4 values('a'),('A'),('b'),('B'),('c'),('C');

insert into t5 values('a'),('A'),('b'),('B'),('c'),('C');

查询数据信息

select * from t3 where info='a';

select * from t4 where info='a';

select * from t5 where info='a';

排序处理

select * from t3 order by info;

select * from t4 order by info;

select * from t5 order by info;

校对规则还会影响数据排序结果,因此也成为排序规则

六.修改数据库的字符集

1.直接转换,此方法只会影响之后存储的数据,不会修改之前存储的数据

查看当前的字符集

show create table t1;

修改成utf8mb4,之后再次查看

alter table t1 charset utf8mb4;

show create table t1;

2.间接修改

锁表逻辑(别让用户再写数据了)导出数据(例如:mysqldump),重新创建数据空表(设定目标字符集),导入备份数据信息

可以影响之后存储的数据,也可以影响之前的数据

注意必须保证修改之后的数据字符集是之前字符集的超集

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

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

相关文章

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)

人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 目录 人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测) 1. 前言 2.人脸活体识别方法 (1)基于人脸动作的检测​​ (2&…

DAY1-Linux操作系统1

文章参考【黑马程序员Python教程_600集Python从入门到精通教程(懂中文就能学会)】 https://www.bilibili.com/video/BV1ex411x7Em/?p40&share_sourcecopy_web&vd_source263bbee2ddeb835c3ab6d9d3c80e0f7c 一.常用命令简单介绍 使用软件 虚拟机…

第十二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - 两种权限控制方式(附前后端代码)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入…

华为云Flexus+DeepSeek征文 | 华为云 ModelArts Studio 赋能 AI 法务:合同审查与法律文件生成系统

一、引言 在法律行业数字化转型的浪潮中,AI 技术正重塑法律服务的流程与效率。本文介绍如何利用华为云 ModelArts Studio 构建一套完整的 AI 法务系统,实现合同审查、法律文件生成、法律咨询与风险识别的智能化解决方案。 二、系统架构设计 &#xff0…

SQL的底层逻辑解析

SQL的底层逻辑涉及数据库管理系统(DBMS)如何解析、优化和执行SQL查询,主要包括以下几个层面: ​查询处理流程​ 解析器(Parser):将SQL语句转换为语法树查询优化器(Optimizer):基于统计信息和成本模型生成最优执行计划执行引擎(Exe…

深入剖析AI大模型:PyTorch 技术详解

今天说一说PyTorch。作为一名python程序员,可能对它了解起来还是很快的。在人工智能浪潮席卷全球的当下,深度学习作为其核心技术,被广泛应用于图像识别、自然语言处理、语音识别等多个领域。而在深度学习的开发框架中,PyTorch 凭借…

物联网架构:定义、解释和实例

物联网(IoT)架构是一个复杂且多维度的概念,构成了物联网系统的核心框架。它是勾勒物联网设备、应用程序和技术如何相互交互以实现预期功能的蓝图。物联网架构并非 “一刀切” 的模型,而是会根据相关物联网系统的具体需求而有所不同…

拿到一台新服务器,怎么跑AI项目

公司新采购一台AI服务器,花大本钱装了个A6000显卡,今天来记录下新服务的使用步骤。 1、查看系统。 这台服务器预装了Ubuntu20.04系统。 lsb_release -a 查看下cpu、内存情况 top 看着还行。 再看下硬盘空间 df -h 空间不算小,2T。 2、…

IO--进程实操

1.创建一个进程扇 #include <051head.h> int main(int argc, const char *argv[]) {pid_t pid;for(int i0;i<4;i){pidfork();if(pid-1) //父进程{ERRLOG("fork error..\n");} else if(pid0) //这是子进程{ …

模型预测控制(MPC)概览

模型预测控制&#xff08;Model Predictive Control, MPC&#xff09; 一、理论基础与发展脉络 1. 历史起源 20世纪70年代起源于工业过程控制&#xff08;如化工领域的动态矩阵控制DMC、模型算法控制MAC&#xff09;&#xff0c;由Richalet、Mehra等学者提出&#xff0c;核心…

Python初体验:从入门到实践

Python无疑是开启编程世界大门的绝佳钥匙。今天,就让我们一起踏上Python的学习之旅。 #01 编写第一个Python程序 环境搭建好之后,上节已经编写了第一个Python程序。现在就好比,我们已经准备好了厨房和食材,要开始做第一道菜了。启动Jupyter后,在Jupyter中新建一个文件,…

【数字后端】- 什么是AOI、OAI cell?它们后面数字的含义

是什么&#xff1f; 不管是在DC综合阶段&#xff0c;还是在PR阶段&#xff0c;尝尝会出现OAI、AOI组合逻辑单元的身影。因为它们可以通过巧妙的串联和并联晶体管非常高效地实现组合逻辑&#xff0c;因此在VLSI设计中非常常用。但是它们也是高pin密度单元&#xff0c;也可能会造…

MQTTServer服务器根据MQTTClient客户端已订阅的主题推送 分发消息

网络读卡器介绍&#xff1a;https://item.taobao.com/item.htm?ftt&id22173428704&spma21dvs.23580594.0.0.52de2c1bgK3bgZ 本示例使用了MQTTNet插件 C# MQTTNETServer 源码 using MQTTnet.Client.Receiving; using MQTTnet.Server; using MQTTnet; using System; u…

【seismic unix 合并两个su文件】

Seismic Unix简介 Seismic Unix&#xff08;SU&#xff09;是由科罗拉多矿业学院开发的开源地震数据处理软件包&#xff0c;基于Unix/Linux环境运行。它提供了一系列命令行工具&#xff0c;用于地震数据加载、处理、分析和可视化&#xff0c;支持SEG-Y格式和SU自定义格式。SU广…

【vmware虚拟机使用】安装vmware workstations17

安装vmware17 本章学习目标VMware虚拟机简介开始实操下载VMware workstation虚拟机安装虚拟机配置虚拟机网络 总结 本章学习目标 1.安装vmware workstation虚拟机 2.自定义配置虚拟机网络&#xff0c;避免网络冲突 VMware虚拟机简介 ​ VMware的核心是Hypervisor&#xff0…

QT6 源(147)模型视图架构里的表格窗体 QTableWidget 的范例代码举例,以及其条目 QTableWidgetItem 类型的源代码。

&#xff08;1&#xff09;先用一个简单的例子&#xff0c;学习一下本类里的成员函数的使用。生成如下图的界面&#xff0c;表格窗体与初始数据&#xff1a; 查看其 ui_widget . h 文件 &#xff0c;里面的将是最标准的表格窗体的使用代码 &#xff1a; #ifndef UI_WIDGET_H #…

URL时间戳参数深度解析:缓存破坏与前端优化的前世今生

&#x1f50d; URL时间戳参数深度解析&#xff1a;缓存破坏与前端优化的前世今生 在日常的Web开发中&#xff0c;你是否注意到很多接口URL后面都会带有一个时间戳参数&#xff1f;比如 xxx/getMsg?_1751413509056。这个看似简单的参数背后&#xff0c;却隐藏着前端缓存策略、性…

分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)

Redis实现分布式锁的原理 Redis分布式锁基于其单线程执行命令的特性&#xff0c;通过原子操作实现多节点间的互斥访问。下面从原理、实现、问题及优化四个方面详细解析&#xff1a; 1.原子性与互斥性 Redis分布式锁的核心是原子性操作&#xff1a; 获取锁&#xff1a;使用SE…

linux升级降级内核实验

✅实验环境 vmware workstation 17 centos7.9 下载链接&#xff1a; https://vault.centos.org/7.9.2009/isos/x86_64/ ubuntu24.04 下载链接&#xff1a; https://old-releases.ubuntu.com/releases/24.04/ ✅实验目的 为了解决日常环境部署中某些驱动软件依赖特定内…

华为云开始了“开发者空间 AI Agent 开发”活动

引言 今天在华为云App上偶然看到一个新活动&#xff1a;Developer Events_Developer Alliance-Huawei Cloud。这个活动要求开发者可结合自己的工作实践&#xff0c;须在华为开发者空间内完成应用构建&#xff0c;应用构建类型和主题为AI Agent应用开发。 AI Agent平台 华为开…