• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql charset=utf8你真的弄明白意思了吗

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

    create table student(
      sid int primary key aotu_increment,
      sname varchar(20) not null,
      age int
    )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=3fe60a490637d1a51ac78bf4a9e7e4d0sub=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的中文UTF8乱码问题
    • MySql修改数据库编码为UTF8避免造成乱码问题
    • MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题
    • PHP MYSQL乱码问题,使用SET NAMES utf8校正
    • 查看修改mysql编码方式让它支持中文(gbk或者utf8)
    • mysql存储emoji表情报错的处理方法【更改编码为utf8mb4】
    • 完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题
    • Mysql以utf8存储gbk输出的实现方法提供
    • mysql 字符串长度计算实现代码(gb2312+utf8)
    • MAC下修改mysql默认字符集为utf8的方法
    上一篇:mysql实现事务的提交与回滚的实例详解
    下一篇:解决centos下MySQL登录1045问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql charset=utf8你真的弄明白意思了吗 mysql,charset,utf8,你,真的弄,