千家信息网

mysql中charset=utf8的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了mysql中charset=utf8的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、先来查看一个建表语句
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 广东猪兼强互联网科技有限公司 西安纸贵互联网科技有限公司 互联网科技公司的优势 互联网金融监管科技数据 互联网科技开发公司 迪茉互联网科技 哈尔滨秒房互联网科技有限公司 隆华科技工业互联网 中国互联网有什么科技含量 常德市电业局互联网科技部 福建科技产业互联网发展 湖北码尼互联网科技有限公司电话 互联网科技圈年度人物 国大互联网教育科技有限公司薪资 山东大美朱楼互联网科技有限公司 云南互联网科技学费 北京互联网科技类企业分布 绵阳真晨互联网科技有限公司 盐城市攀科互联网科技有限公司 青岛互联网科技园 互联网通讯科技 深圳互联网络科技有限公司 青岛互联网科技公司 伴你行互联网科技有限公司 联恩商钥互联网科技有限公司 隆华科技工业互联网 互联网科技革命什么开始 华夏互联网科技业 中和天地互联网科技有限公司 恒生互联网科技趋势
0