zoukankan      html  css  js  c++  java
  • MySQL 字符集utf8和utf-8的关系


    什么是字符集(character set)

    • 字符的二进制编码方式
    • 二进制编码到一套字符的映射
    • 二进制->编码->字符

    校对规则(collation)

    • 在字符集内用于比较字符的一套规则

    ASCII码

    • 1个字节由8个二进制位组成
    • 1个字节可表示256种不同的状态(256个不同符号)
    • ASCII码规定了128个字符(数字、英文字符和一些标点符号)的编码

    Unicode国际化支持

    • 世界上存在多种编码方式,同一个二进制数字被解释成了不同的符号
    • 现存 编码 不能在多语言环境中使用,诞生了Unicode(统一码)
    • 一个字符的Unicode编码是确定的
    • Unicode编码实现方式各不相同
    • Unicode的实现方式称为Unicode转化格式(UTF)

    UTF-8

    • UTF-8是Unicode的实现方式之一
    • 其它实现方式还有UTF-16, UTF-32
    • 变长编码,一个符号使用1~4个字节表示
    • utf8是MySQL存储Unicode数据的一种可选方法

    utf8

    • MySQL中实现了UTF-8编码的unicode 字符集
    • MySQL中utf8是utf8mb3的别名
    • utf8中,一个符号使用1~3个节点表示
    • 对UTF-8支持不彻底,可采用utf8mb4字符集

    utf8与utf8mb4的关系

    • 都是实现了UTF-8编码的unicode 字符集
    • utf8仅支持基本多语言平面Basic Multilingual Plane (BMP)
    • utf8mb4支持BMP之外的补充字符(如emoji,emoji 是一种特殊的 Unicode 编码)
    • utf8 一个字符最多使用3个字节存储,utf8mb4 一个字符最多使用4个字节存储
    • 对于BMP字符,utf8和utf8mb4具有相同的编码,相同的长度
    • 对于非BMP字符,utf8mb4使用4个字节来存储,utf8不能存储非BMP字符
    • innodb中默认最大可对767个字节建立索引
    • 使用utf8 的列最多可对255个字符建立索引
    • 使用utf8mb4 的列最多可对191个字符建立索引

    超集

    • 字符集A,B ,B支持的所有字符A都支持,A 是B超集
    • 比如 GBK字符集是GB2312字符集的超集,它们又都是ASCII字符集的超集
    • utf8mb4是utf8的超集

    字符集设置

    set names x 等价于

    • set character_set_client=x;
    • set character_set_connection=x;
    • set character_set_results=x;

    --default-character-set 用户连接时设置字符集 等价于

    • set character_set_client=x;
    • set character_set_connection=x;
    • set character_set_result=x;
      init-connect=set names binary
    • 让client和server交互的时候以 什么模式(不做任何转化)来传送

    default-character-set

    • 设置[mysql]和[client] 中的字符集

    character-set-server

    • 设置[mysqld] 进程的默认字符集

    collation-server

    • 设置[mysqld] 进程的默认校对规则
    • utf8_general_ci 查找、排序不区分大小写
    • utf8_bin 查找、排序区分大小写

    参考
    Unicode Support
    字符集与编码杂谈
    ASCII,Unicode 和 UTF-8
    清官谈mysql中utf8和utf8mb4区别

  • 相关阅读:
    组合数计算
    使用叉积判断两条直线是否相交
    关于括号的简单模拟题
    链表
    长句拆单词
    第九章 SpringCloud之Zuul路由
    第八章 SpringCloud之Feign、Hystrix结合使用
    第七章 SpringCloud之非声明式RestClient:Feign
    第六章 SpringCloud之Ribbon负载均衡
    第五章 SpringCloud之Eureka-Client使用RestTemplate实现服务之间的调用
  • 原文地址:https://www.cnblogs.com/YangJiaXin/p/10772229.html
Copyright © 2011-2022 走看看