zoukankan      html  css  js  c++  java
  • 05、MySQL—字符集

    1、字符编码概念

    字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

    在计算机中所看到的任何内容都是字符构成的。

    字符编码(character code)是计算机针对各种符号,在计算机中的一种二进制存储代号。

    字符集概念

    字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。

    常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。

    2、设置客户端所有字符集

    如果直接通过cmd下的mysql.exe进行中文数据插入,那么可能出错

    范例:直接通过cmd进行中文数据插入

    出错原因:

    1、 用户是通过mysql.exe来操作mysqld.exe

    2、 真正的SQL执行是Mysqld.exe来执行

    3、 mysql.exe将数据传入mysqld.exe的时候,没有告知其对应的符号规则(字符集),而mysqld也没有能力自己判断,就会使用自己默认的(字符集)

    解决方案:mysql.exe客户端在进行数据操作之前将自己所使用的字符集告诉mysqld

    Cmd下的mysql.exe默认都只有一个字符集:GBK

      

    Mysql.exe如果告知Mysqld.exe对应的字符集类型为gbk?

    快捷方式:set names 字符集

    范例:将Mysqld.exe对应的字符集设置为gbk

     

    重新进行数据插入:中文(GBK)

     

    深层原理:客户端,服务端,连接层

    Mysql.exe与Mysqld.exe之间的处理关系一共分为三层

    客户端传入数据给服务端:client:character_set_client

    服务端返回数据给客户端:server:character_set_results

    客户端与服务端之间的连接:connection:character_set_connection

    说明:

    Set names 字符集的本质:就是一次性打通三层关系的字符集,变得一致。

    在系统中有三个变量来记录着这三个关系对应的字符集:show variables like ‘character_set_%’;

    范例:查看character字符集

     

    范例:查看一个新的客户端的对应的字符集关系

     

    (1) 修改服务器端变量的值

    基本语法:Set 变量名 = 值;

    范例:修改服务端的编码

     

    修改过后,重新进行数据插入和查看的结果:插入OK,但是查看乱码,结果如下:

     

    修改结果字符集为GBK,结果如下:

      

    Connection只是为了更方便客户端与服务端进行字符集转换而设。

    Set names gbk;

    Set character_set_client = gbk; //为了让服务器识别客户端传来的数据

    Set character_set_connection = gbk;//更好的帮助客户端与服务端之间进行字符集转换

    Set character_set_results = gbk;//为了告诉客户端服务端所有的返回的数据字符集

  • 相关阅读:
    多变的鸭子策略模式
    反序列化和序列化
    UBUNTU eclipse必须是 jdk5.0以上
    Ubuntu Linux:MySQL安装指南
    phpMyAdmin下载、安装和使用入门
    读者-写者问题
    wget用法2
    在linux下安装mysql
    linux下数字转成字符串
    [SQLServer]必须知道的SQL
  • 原文地址:https://www.cnblogs.com/CSAH/p/11116778.html
Copyright © 2011-2022 走看看