共计 1880 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要介绍了 mysql 中 charset=utf8 的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
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;
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“mysql 中 charset=utf8 的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!