字符集和比较规则

字符集

字符集指的是某个字符范围的编码规则

  • ASCII(128个):1个字节进行编码,包含空格,标点符号,数字,大小写字母,一些不可见字符
  • ISO 8859-1/latin1(256个):1个字节进行编码,ASCII基础上扩充了128个西欧常见字符
  • GB2312(6762个):因兼容ASCII字符集,所以在ASCII内的1个字节进行编码,反之2个字节;包含6763个汉字,682个拉丁字母,希腊字母,日本平假名/片假名,俄语西里尔字母
  • GBK:对GB2312进行扩充
  • Unicode
    • UTF8:收录所有字符,兼容ASCII,采用变长编码,编码一个字符需要1-4个字节。
    • UTF16:编码一个字符需要2-4个字节
    • UTF32:编码一个字符需要4个字节

MySQL支持的字符集

  • utf8mb3:阉割过的utf8字符集,编码一个字符需要1-3个字节
  • utf8mb4:真正的utf8字符集,编码一个字符需要1-4个字节

因为一个字符所用的最大字节长度会影响数据库的存储和性能,所有一般我们都使用的1-3个字节表示字符。但如果有存储emoji等使用4个字节来编码一个字符的情况,可使用utf8mb4

可通过命令show charset;查看当前数据库支持的字符集,及其默认比较规则default_collection和最大长度max_len。

MySQL中字符集和比较规则有四种级别:

服务器级别:可在配置文件中更改

查看字符集:SHOW VARIABLES LIKE ‘character_set_server‘; ? 查看比较规则:SHOW VARIABLES LIKE ‘collation_server‘;

数据库级别:建库时不指定默认使用服务器级别配置,建后不可更改。

查看字符集:SHOW VARIABLES LIKE ‘character_set_database‘;

查看比较规则:SHOW VARIABLES LIKE ‘collation_database‘;

表级别:建表时不指定默认使用数据库级别配置,建后不可更改。

列级别:建列时不指定默认使用表级别配置,可通过alter修改。

客户端与服务器请求过程中涉及三个系统变量,影响客户端请求内容和服务器返回结果的字符集转换。如果这三个系统变量不一致,将影响请求结果与我们期望的不一致。

系统变量 描述
character_set_client 服务器解码请求时使用的字符集
character_set_connection 服务器处理请求时会把请求字符串从character_set_client转为character_set_connection
character_set_results 服务器向客户端返回数据时使用的字符集

可通过SET NAMES 字符集名;同时更改这三个变量,等同于SET character_set_client = 字符集名; SET character_set_connection = 字符集名;SET character_set_results = 字符集名;

或者希望在客户端启动时设置成一样的,可在配置文件中写为default-character-set=utf8

比较规则的应用

比较规则的作用体现在字符串大小的表达式,对某个字符串的排列(order by)

注:来自MySQL是怎样运行的读书笔记

原文地址:https://www.cnblogs.com/hangzhi/p/10947966.html

时间: 2024-10-05 07:22:45

字符集和比较规则的相关文章

mysql字符集和校对规则(Mysql校对集)

字符集的概念大家都清楚,校对规则很多人不了解,一般数据库开发中也用不到这个概念,mysql在这方便貌似很先进,大概介绍一下简要说明 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符集有不同的校对规则,命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)._cs(大小写敏感)或_bin(二元)结束 校对规则一般分为两类: binary

MySQL学习笔记(7)之字符集和校对规则

字符集和校对规则 1.字符集:一套符号和字符编码的集合. 2.校对规则:在字符集内用于比较字符的一套规则. 3.安装数据库时最好用我们定好的编码. 4.建立表时可指定字符集:.....charset=[gdk/utf8]: 5.查看编码变量:show varchar like '%char%'; – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层

MySQL学习笔记(5)之字符集和校对规则

字符集和校对规则 1.字符集:一套符号和字符编码的集合. 2.校对规则:在字符集内用于比较字符的一套规则. 3.安装数据库时最好用我们定好的编码. 4.建立表时可指定字符集:.....charset=[gdk/utf8]: 5.查看编码变量:show varchar like '%char%'; – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层

mysql中字符集和校对规则

首先,明确一下字符集和校对规则的概念:    字符集(charset):是一套符号和编码    校对规则(collation):是在字符集内用于比较字符的一套规则,比如有的规则区分大小写,有的则无视 mysql服务器能够支持多种字符集,可以使用SHOW CHARACTER SET语句列出可用的字符集.如果希望列出一个字符集的校对规则,可以使用SHOW COLLATION语句.例如,如果希望查询以latin1开头的校对规则,可以使用如下语句SHOW COLLATION LIKE 'latin1%'

翻译:MariaDB字符集和排序规则

html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary { display: block } audio,canvas,progress,video { display: inline-block; vertical-align: baseline } audio:not([co

MySQL字符集和校对规则

一.字符集 字符集:就是一对文字符号及其编码比较的集合 二.常用字符集: ASCII:主要用于显示英语和其他西欧语言.长度为一个字节UTF-8:互联网广泛支持的Unicode字符集,长度为一到四个字节 GBK:主要用于显示汉字,长度为二个字节 三.查看MySQL的字符集和校对规则 1.查看MySQL服务器的字符集 show charsetset/character set 2.查看字符集的校对规则 show collation; 3.查看当前数据库的字符集 mysql> show variabl

mysql中的字符集和校对规则(mysql校对集)

1.简要说明介绍 字符集和校对规则 字符集是一套符号和编码.校对规则是在字符集内用于比较字符的一套规则. MySql在collation提供较强的支持,oracel在这方面没查到相应的资料. 不同字符集有不同的校对规则,命名约定:以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)._cs(大小写敏感)或_bin(二元)结束 校对规则一般分为两类: binary collation,二元法,直接比较字符的编码,可以认为是区分大小写的,因为字符集中'A'和'a'的编码显然不同.

修改MySql中数据表和字段的字符集和排序规则

由于数据库中的数据表和表字段的字符集和排序规则不统一,找了很多帖子,最后发现如下脚本很好用. 用法儿是:先执行如下脚本生成修改数据表和表字段的脚本,然后再执行这些生成的脚本. 1. 修改指定数据库中所有varchar类型的表字段的字符集为UTF8,并将排序规则修改为utf8_general_ci SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER

第四节:乱码的前世今生——字符集和比较规则

一.字符集和比较规则简介 字符集简介        字符集是描述某个字符范围的编码规则.        必须清楚的两个事情.            你要把那些字符映射成二进制数据?也就是界定清楚字符范围            怎么映射?字符串映射成二进制数据叫做编码,二进制数据映射到字符过程叫解码.    比较规则的简介        同一种字符集可以有多种比较规则.        二进制比较规则 略    一些重要的字符集        不同的字符集字符范围和用到的编码规则可能都不一样.