,,MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

,,MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

本文主要介绍MySQL代码utf8和utf8mb4 utf8mb4_unicode_ci和utf8mb4_general_ci的相关知识。本文通过示例代码向您详细介绍,对您的学习或工作有一定的参考价值。有需要的朋友可以参考一下。

参考:mysql字符集概述

Utf8mb4已经成为MySQL 8.0的默认字符集,utf8mb4_0900_ai_ci是MySQL 8.0.1及以后版本的默认归类。

新项目只考虑 utf8mb4

UTF-8编码是一种变长编码机制,可以存储1~4个字节的字符。

因为历史问题,MySQL中的utf8编码并不是真正的UTF-8,而是阉割版,最大长度只有3个字节。当遇到4字节的UTF-8编码,如表情符号字符或复杂汉字时,会导致存储异常。

从5.5.3开始,MySQL开始用utf8mb4编码实现完整的UTF-8,其中mb4代表最多字节4,最多占用4个字节。8.0以后,utf8mb4将作为某个版本的默认字符编码。

设置服务器默认字符集为 utf8mb4

创建数据库时,如果没有指定字符集,将采用服务器的默认字符集。将服务器的默认字符集设置为utf8mb4可以提高便利性。

编辑 MySQL 的配置文件

只需要考虑五个系统变量。如果将这五个变量更改为utf8mb4,修改将会成功:

角色集客户端

角色集连接

字符集结果

角色集服务器

字符集数据库

My.cnf是MySQL的配置文件。请记住在修改之前进行备份:

vi /etc/my.cnf

在【mysqld】下添加default-character-set=utf8后,服务器无法启动,令人费解。以后这样改就好了(MySQL5.7):

[mysqld]

init _ connect=' SET collation _ connection=utf8mb 4 _ unicode _ ci '

init_connect='设置名称utf8mb4 '

character-set-server=utf8mb4

collation-server=utf8mb 4 _ unicode _ ci

跳过字符集客户端握手

.

[客户]

default-character-set=utf8mb4

MySQL8.0默认已经是utf8mb4了,不用改了。如果要更改它,配置文件如下:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/MySQL/MySQL . sock

log-error=/var/log/mysqld.log

PID-file=/var/run/mysqld/mysqld . PID

character-set-server=utf8mb4

[客户]

default-character-set=utf8mb4

重启并确认

如您所见,系统代码、连接代码、服务器和客户端代码都被设置为UTF-8:

mysql显示像“%char%”这样的变量;

- -

|变量名称|值|

- -

| character_set_client | utf8mb4 |

| character _ set _ connection | utf8mb 4 |

| character _ set _ database | utf8mb 4 |

|字符集文件系统|二进制|

| character _ set _ results | utf8mb 4 |

| character_set_server | utf8mb4 |

|字符集系统| utf8 |

| character _ sets _ dir |/usr/share/MySQL-8.0/charsets/|

| validate _ password . special _ char _ count | 1 |

- -

集合中的9行(0.00秒)

MySQL 中字符集相关变量

Character_set_client:客户端请求的数据的字符集

Character_set_connection:从客户端接收数据然后传输数据的字符集。

Character_set_database:默认数据库的字符集,无论默认数据库如何变化,都是这个字符集;如果没有默认数据库,则使用character_set_server指定的字符集。这个变量建议由系统自己管理,不要人为定义。

Character_set_filesystem:把操作系统上的文件名转换成这个字符集,也就是把character_set_client转换成character_set_filesystem。默认的二进制文件不做任何转换。

字符集结果:结果集的字符集

Character_set_server:数据库服务器的默认字符集

Character_set_system:存储系统元数据的字符集,总是utf8,不需要设置。

创建数据库时指定字符集为 utf8mb4

如果数据库的默认字符集不是utf8mb4,您可以在创建数据库时指定字符集:

创建数据库mydb字符集utf8mb 4 COLLATE utf8mb 4 _ unicode _ ci;

排序字符集 collation

除了存储字符之外,还需要对它们进行排序或大小比较。推荐Utf8mb4_unicode_ci,但是utf8mb4_general_ci没什么问题。

MySQL 8.0默认为utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci之一。具体含义如下:

Uft8mb4表示UTF-8编码方案,每个字符最多占用4个字节。

000是指Unicode校对算法版本。(Unicode排序算法是一种用于比较两个符合Unicode标准要求的Unicode字符串的方法)。

Ai的意思是不敏感的口音。也就是说排序的时候e,,,和没有区别。

Ci表示不区分大小写。也就是排序的时候p和p没有区别。

Utf8mb4已经成为默认字符集,utf8mb4_0900_ai_ci是MySQL 8.0.1及更高版本中的默认归类。以前,utf8mb4_general_ci是默认的排序规则。因为utf8mb4_0900_ai_ci排序规则现在是默认排序规则,所以默认情况下,新表可以存储基本多语言平面之外的字符。表情符号现在可以默认存储。如果需要区分重音和大小写,可以用utf8mb4_0900_as_cs代替。

总结

关于mysql代码utf8和utf8mb4 utf8mb4_unicode_ci和utf8mb4_general_ci的这篇文章到此为止。有关MySQL代码utf8和utf8mb4的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • pymysql菜鸟教程,pymysql 使用
  • pymysql菜鸟教程,pymysql 使用,pymysql模块使用简介与示例
  • mysql锁实现,mysql锁算法
  • mysql锁实现,mysql锁算法,MySQL锁机制与用法分析
  • mysql连接报错10061,mysql连接错误10060
  • mysql连接报错10061,mysql连接错误10060,MYSQL无法连接 提示10055错误的解决方法
  • mysql连接报10060错误,mysql连接报错10055
  • mysql连接报10060错误,mysql连接报错10055,MySQL连接异常报10061错误问题解决
  • mysql辅助索引和主键索引,mysql 主键 外键 索引
  • mysql辅助索引和主键索引,mysql 主键 外键 索引,MySQL索引之主键索引
  • MySQL语句大全,mysql常见语句总结
  • MySQL语句大全,mysql常见语句总结,MySQL语句整理及汇总介绍
  • mysql触发器的使用方法实验报告,mysql中触发器的使用
  • 留言与评论(共有 条评论)
       
    验证码: