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区别
MySQL 字符集utf8和utf-8的关系的更多相关文章
- mysql字符集 utf8 和utf8mb4 的区别
一.导读我们新建mysql数据库的时候,需要指定数据库的字符集,一般我们都是选择utf8这个字符集,但是还会又一个utf8mb4这个字符集,好像和utf8有联系,今天就来解析一下这两者的区别. 二.起 ...
- mysql安装设置mysql字符集utf8及修改密码
MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...
- MySQL字符集 utf8 和 utf8mb4 区别及排序规则 general_ci 和 unicode_ci 和 bin 的区别
先说字符集 utf8mb4说明:MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode.好在utf8mb4是utf8的超 ...
- 设置MySQL字符集utf8
1.修改mysql 配置文件my.cnf 标签[mysqld]下添加即可 character-set-server = utf8 2.创建数据库时设置字符集 create database db_na ...
- mysql字符集utf8和utf8mb4区别
1.起因 公司游戏项目上线第一天,出现单个区服异常宕机的问题,根据日志排查下来,连接数据的时候报错,后面排查是因为有玩家插入Emoji 等表情导致无法存储如数据库,数据库字符集编码为utf8,后续改成 ...
- MySQL 如何修改字符集 utf8 改为 utf8mb4
在实行sql server 向 mysql 迁移数据时,报错: Incorrect string value: '\xF0\x9F\x98\x8A' 原因是mysql 采用的是 utf8 的字符集,而 ...
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...
- MySQL 数据库字符集 utf8 和 utf8mb4 的区别
参考于今日头条上Java芋道源码的-----记住:永远不要在 MySQL 中使用 UTF-8 字符集选择 MySQL 的 utf8 实际上不是真正的 UTF-8.utf8 只支持每个字符最多三个字节, ...
- MySQL将utf8字符集改为utf8mb4
前言 今天在查看tomcat日志时发现了一个错误:Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x82\xF0 ...
随机推荐
- django AnonymousUser
AnonymousUser对象class models.AnonymousUser django.contrib.auth.models.AnonymousUser是一个实现django.contri ...
- unity编程心得
1. 不要通过public变量 从工程面板 直接 拖 GameObjct 的引用, 当这样的public变量很多 ,子物体很多,又没有做成预制体,,别人重新移植这段功能会很麻烦,,应该用GameOb ...
- 查看oracle的执行计划
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分 ...
- rhce 第十一题 挂载NFS共享
挂载NFS共享 在system2上挂载一个来自 system1.group8.example.com 的NFS共享,并符合下列要求: /public 挂载在/mnt/nfsmount目录上 /prot ...
- 二维树状数组poj1195
题目链接:https://vjudge.net/problem/POJ-1195 题意:一开始输入0和一个s,0代表开始,s代表这是一个s*s的图,接下来会输入1或2,1代表进行单点修改,后面会接3个 ...
- Django缓存设置
由于Django构建得是动态网站,每次客户端请求都要严重依赖数据库,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中, ...
- AltiumDesigner PCB中栅格与格点的切换
PCB中通过快捷键Ctrl+G,进入设置界面. 在弹出的对话框中,在Display,Coarse选择Lines为栅格,Dots为格点,Do Not Draw为无任何显示.
- Linux基本的操作
一.为什么我们要学习Linux 相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形化界面做得这么好,日常基本使用的话,学习成本几乎为零. ...
- springcloud ConfigServer的工作原理
前话 根据前文得知,bootstrapContext引入了PropertySourceLocator接口供外部源加载配置,但作用是应用于子级ApplicationContext的环境变量Environ ...
- 网站开发,推荐使用SuperSlide 插件-Tab标签切换,图片滚动,无缝滚动,焦点图
SuperSlide 致力于解决网站大部分特效展示问题,使网站代码规范整洁,方便维护更新.网站上常用的“焦点图/幻灯片”“Tab标签切换”“图片滚动”“无缝滚动”等只需要一个SuperSlide即可解 ...