zoukankan      html  css  js  c++  java
  • 浅谈MySQL字符集

    字符集

    例子:在mysql里面存储一个a,其实在里面存的是“97”
    字符集==字符+编码
    常用的中文字符集:GBK–》国标
    (左边是中文,右边是编码)

    韩文字符集、日文字符集、美国字符集(ASCII码)、西欧字符集
    Unicode字符集(里面整合了中文、韩文、美国等的字符集)(常用的utf-8)

    操作系统的字符集

    ①在windows下:cmd–》chcp,如果显示“936”,则表示是中文字符集
    ②linux下:

    cat /etc/sysconfig/i18n
    LANG="zh_CN.UTF-8"

    ③mysql里面:

    mysql> select ascii('a');

    这里写图片描述

    mysql内部存储字符集

    服务器字符集
    数据库字符集
    表的字符集
    列的字符集
    优先级:列>表>库>服务器

    查看字符集:mysql>show character set;
    查看服务器级别字符集:
    mysql> show variables like ‘%character%’;
    查看数据库级别的字符集:
    mysql>create database TENNIS;
    mysql>use TENNIS;
    建立表的时候设置字符集:
    mysql>create table t20(name varchar(10)) character set gbk;
    mysql>show create table t20;
    这里写图片描述

    建立列的时候设置字符集:
    mysql>create table t21(name varchar(10)) character set big5);
    mysql>show create table t21;

    这里写图片描述

    mysql字符集综合解惑及最佳实践

    mysql> show variables like ‘%character%’;

    这里写图片描述

    mysql字符集结构图:

    这里写图片描述

    在mysql内部里,
    character_set_clientmysql client的字符集要一致;
    character_set_connection 和 character_set_client要一致;
    内部操作字符集(内部存储字符集):上面讲的四个级别的字符集。

    eg:insert into t20(name) value(’你好’);
    –》客户端’你好’被进行了编码 9190,9193
    mysql接到SQL语句以后,发现里面有字符
    1、发现要做insert
    2、发现t20(name) 是varchar列,是字符,字符就需要编码
    3、对数据库来说,接收到的是‘9190、9193’
    4、数据库会问客户端,‘9190、9193’ 是用什么编码的,客户端回答说‘character_set_client=utf8’,数据库就明白了是用utf8编码的。

    客户端和mysql数据库的字符集可以不一样,不一样就需要转换,只能转换一次!!

    服务器的字符集是拉丁;
    数据库的字符集是utf8;
    其中一张表的字符集是GBK;

    客户端是中文的,字符集是GBK,connection是utf8
    客户端B是日文的,connection是日文的
    客户端C是韩文的,connection是韩文的

    在未指定的时候,默认列继承表,表继承库,库继承服务器。

    校对规则

    校对规则:collation

    这里写图片描述

    插入四个变量,查找name=a的,但是会出现A和a:

    这里写图片描述

    所以,
    针对uft8 –》大小写是否敏感的这么一个关于比较和排序的参数

    字符集为utf8时,建表时指定大小写敏感:
    mysql>create table t20(id int,name varchar(20)) CHARACTER SET gbk COLLATE=gbk_bin;
    这里写图片描述

    排序后,会发现两个表的顺序不一样,因为COLLATE=gbk_bin 就是按ascii的编码的大小排的
    这里写图片描述
    (表1就是大小写不敏感的时候,表2就是大小写敏感的时候)
    对gbk来说,默认的是大小写不敏感!!
    这里写图片描述

  • 相关阅读:
    IntelliJ IDEA 14.03 java 中文文本处理中的编码格式设置
    应聘感悟
    STL string分析
    CUDA SDK VolumeRender 分析 (1)
    BSP
    CUDA SDK VolumeRender 分析 (3)
    CUDA SDK VolumeRender 分析 (2)
    Windows软件发布时遇到的一些问题
    Ten Commandments of Egoless Programming (转载)
    复习下光照知识
  • 原文地址:https://www.cnblogs.com/lpeng94/p/12546479.html
Copyright © 2011-2022 走看看