zoukankan      html  css  js  c++  java
  • MySQL数据库8(六)字符集--有问题

    字符集

    字符编码概念

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

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

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

    字符集概念

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

    常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

                                                     简体中文         繁体中文

    MySQL字符集设置

    设置客户端所有字符集

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

    出错原因:

    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 字符集;

    深层原理:客户端,服务端,连接层(show variables like ‘character_set%’)

    mysql.exe 与mysqld.exe之间的处理关系一共分为三层:

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

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

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

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

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

     

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

     

    修改服务器端变量的值:

    set 变量名 = 值;

    set character_set_client = gbk;

    重新进行数据插入和查看的结果:插入OK,但是查看乱码。

     

    修改结果字符集为gbk

     

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

    set names gbk:

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

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

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

  • 相关阅读:
    【自用】【做题日记6】CTFHUB-文件上传
    【自用】【做题日记5】CTFHUB-XSS
    【自用】【做题日记4】CTFHUB-SQL注入
    【自用】【做题日记3】CTFHUB-密码口令
    【自用】【做题日记2】CTFHUB-信息泄露
    【自用】【做题日记1】CTFHUB-web前置技能
    前端-常用正则表达式
    ClashX 配置代理白名单
    http 网址 URL 特殊字符转义编码
    axios的post和request请求方法
  • 原文地址:https://www.cnblogs.com/sun-yanglu/p/9581592.html
Copyright © 2011-2022 走看看