千家信息网

mysql中charset=utf8的示例分析

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了mysql中charset=utf8的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、先来查看一个建表语句
千家信息网最后更新 2025年01月21日mysql中charset=utf8的示例分析

这篇文章主要介绍了mysql中charset=utf8的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1、先来查看一个建表语句

create table student(  sid int primary key aotu_increment,  sname varchar(20) not null,  age int)charset=utf8;

思考一个问题:

  • 当我们建表时,不指定charset=utf8的时候,此时插入中文,为什么会报错呢?

  • 当指定charset=utf8后,再次插入中文,为什么又可以插入中文,并且不乱码呢?

2、查看CMD黑窗口的字符集

打开CMD黑窗口->鼠标放在窗口最上方->点击鼠标右键->属性->点击选项


通过上图可以知道:CMD中输入文字使用的字符编码是GBK。同时你在保存文件的时候,经常会看到ANSI字符集,这个代表的是本地字符集,我们在中国,本地字符集使用的就都是GBK编码。

3、你注意这个问题了吗?


客户端client输入的字符,都是采用GBK编码的。mysql服务器存储的字符又是UTF8编码的。那么,我们对数据库、表进行增删改查,最后返回到客户端界面中,要想保证字符不乱码,肯定是经过了"编码转换过程的"。我要问的是,究竟是什么东西完成了这个编码的转换过程的?

4、你不熟悉的几个mysql操作命令

-- 查看数据库支持的所有的字符集(这句命令自己下去操作)。mysql> show character set;-- 查看系统当前状态,里面可以看到部分字符集设置。mysql> status;-- 查看系统字符集设置,包括所有的字符集设置mysql> show variables like '%char%';

操作结果如下:


通过上图我们可以看到有一个叫做"connection"的东西,中文名叫做"连接器"。"连接器"就是用来进行"编码转换过程"的。

1)连接器的特性

① "连接器的作用":

连接客户端与服务端,进行字符集的转换。连接器有这种自动转换的功能。

② "连接器的工作流程":
Ⅰ首先,客户端的字符先发给连接器,连接器选择一种编码将其转换(转换之后的编码, 与连接器的编码格式一致),进行临时存储。
Ⅱ 接着,连接器再次转换成与服务器一致的编码,并最终存储在服务器中。
Ⅲ 然后,服务器返回的结果,再次先通过连接器,连接器仍然是选择一种编码将其转换(转换之后的编码, 与连接器的编码格式一致),进行临时存储。
Ⅳ 最后,连接器再将结果转化为与客户端一致的字符集,就可以在客户端正常显示了。

2)图示说明连接器connection的作用

图一:

图一说明如下:

图二:

图二说明如下:

5、对上述两个图的实战演示

1)首先,了解如下几个代码。

-- 1)设置客户端的字符集。set character_set_client=gbk;-- 2)设置连接器的字符集。set character_set_connection=utf8;-- 3)设置返回结果的字符集。set character_set_results=gbk;

2)代码演示过程,详细地写在如下链接中的sql文件中,可以自行下载,查看。

http://note.youdao.com/noteshare?id=3fe60a490637d1a51ac78bf4a9e7e4d0&sub=511D73BDDEA34D9BAC565249035D74A8

6、产生乱码的两个原因

解码与实际编码,不一致导致的乱码,可修复

在传输过程中,由于编码不一致,导致部分字节丢失,造成的乱码,不可修复。

1)编码和解码不一致导致的乱码

2)传输过程中,丢失字节导致的乱码。

7、对实际情况的分析(什么都不设置,系统默认是如何呢?)

1)仔细查看如下图片


根据上图可以知道(好好理解下面的文字说明):

图二:

2)set names gbk的含义

-- 当客户端、连接器、返回值的字符集相同,并且都是gbk的时候,我们可以采取如下的简写方式: set names gbk; -- 上述sql语句其实包含了如下三层意思: set character_set_client=gbk; set character_set_connection=gbk; set character_set_results=gbk;

感谢你能够认真阅读完这篇文章,希望小编分享的"mysql中charset=utf8的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

字符 编码 连接器 字符集 客户 一致 乱码 客户端 过程 服务 服务器 篇文章 结果 中文 存储 分析 上图 再次 时候 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北斗卫星授时服务器 数据库设计过程分为6个阶段 电脑dns服务器检测到没有响应 服务器数据转移到移动硬盘 先改缓存再一次性改数据库 优质软件开发口碑好 web渗透网络安全技术培训 亚马逊云有香港服务器吗 步进电机上位机软件开发流程 四年级网络安全手抄报图片 武汉网络安全员考试 创联工场网络技术有限公司 数据库系统概论王珊sql 维普2022年更新数据库 服务器高端工作站使用多少内存 计算机网络技术的知识讲解 软件开发自学需要懂些什么 315网络安全图片 我的世界查看最近玩的服务器 软件开发一个人完成 互联网普惠金融科技迅速展 互联网金融科技靠谱吗 亚马逊云有香港服务器吗 邵阳计算机网络技术培训机构 湘西网络安全系统哪家好 医院网络安全信息系统安全 新向标英语作文 网络安全 db2数据库怎么写文字 plsql没法读取数据库 蓝卡停车场管理系统数据库密码
0