• MySQL--字符集基础


    =========================================================================

    字符集和编码规则

    字符集:特定类型或用途的字符集合,为集合中每个"字符"分配一个唯一的ID值(Code Point)
    
    编码规则:将字符集中的字符按照其对应的ID值转换为字节系列的规则(编码和解码)
    UNICODE是字符集,而UTF和UTF16以及UTF32属于编码规则。
    
    ASCII编码:American Standard Code for Information Interchange,美国信息互换标准代码,使用1字节8Bit来存放2的8次方255个字符。
    GB2312:在ASCII编码的基础上进行扩展,收录6000+常用汉字,形成GB2312编码
    GBK:在GB2312的基础上扩展,收录繁体和不常用汉字以及各种字符,形成GBK编码
    GB18030:在GBK的基础上扩展,收录各名字的独立的字符,最终形成GB18030
    UNICODE: 全球标准化组织ISO统一对全球各种文字和字符进行编码形成的字符集。
    UTF8:基于UNICODE字符集,以8Bit为一个编码单位的可变长编码规则,最新UTF8将每个Unicode字符编码为1到4字节长度。
    UTF16:基于UNICODE字符集,以16Bit为一个编码单位的可变长编码规则,最新UTF16将每个Unicode字符编码为2个或4个字节长度。

    =========================================================================

    Unicode字符集与UTF-8编码

    Unicode编码与UTF-8的编码的对应关系:
    Unicode编码 UTF-8编码(二进制)
    U+0000 		– U+007F 		0xxxxxxx
    U+0080 		– U+07FF 		110xxxxx 10xxxxxx
    U+0800 		– U+FFFF 		1110xxxx 10xxxxxx 10xxxxxx
    U+10000 	– U+10FFFF 		11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
    
    一个字节的uft8表示的unicode 码范围为(0 ~0x7F)
    两个字节长度的uft8 表示的unicode码范围为(0x80 ~ 0x07FF)
    三个字节长度的uft8 表示的unicode码范围为(0x0800 ~ 0xFFFF)
    四个字节长度的uft8 表示的unicode码范围为( 0x10000 ~ 0x10FFFF)

    =========================================================================

    MySQL的UTF8和UTF8MB4

    MySQL 与UTF8
    在MySQL刚开发时,Unicode字符集还不够完善,MySQL使用只支持最长三字节的UTF8字符集便可以存放所有Unicode字符。
    随着Unicode的完善,Unicode字符集收录的字符数量越来越多,最新版本的UTF8需要使用1到4个字节来存放Unicode字符。
    MySQL为保持版本兼容,依旧使用最多3字节的UTF8字符集,因此MySQL中的UTF8不能完全兼容最新的UTF8版本,导致很多生僻字符和网络表情无法正常存储到MySQL中。 为兼容最新的UTF8字符集,在MySQL 5.5.3版本引入UTF8MB4字符集。

    =========================================================================

    MySQL字符集查看和修改

    #改表的字符集为UTF8
    ALTER TABLE TBName CONVERT TO CHARACTER SET utf8;
    
    #看字符集对应的默认排序规则
    SHOW CHARACTER SET LIKE 'utf8' G
    
    #查看当前字符编码的设置
    SHOW VARIABLES LIKE 'character_set%' G
    
    #查看每列的字符集
    SHOW FULL COLUMNS FROM TB_Name G
  • 相关阅读:
    使用 logger 在脚本中输出多个日志
    MySQL 5.7 安装完成后,立即要调整的性能选项
    多线程练习2_龟兔赛跑
    多线程练习1_网图下载
    【BFS(预处理)+SPFA】【NOIP2013】华容道
    【数学】【NOIP2013】解方程
    【二分答案+倍增】【NOIP2015】运输计划
    std::strncpy 简介
    text 文本去重行
    关于string::copy()的比较详细的示例
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10463121.html
Copyright © 2020-2023  润新知