MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 字符集

MySQL中的字符集是合法的一组 字符,编码,符号在一个字符串中。本文介绍了如何在MySQL中获取所有字符集,如何为客户端连接配置适当的字符集以及如何在多个字符集之间转换字符串。
通过以下示例使我们理解它: 一个假想的字符集。假设我们有从 A到B或从a到b 的字母。接下来,我们将为每个字母分配一个数字: A = 0,B = 1 。此处,字母A或B是符号,数字0或1是编码。我们称这两个字母(A到B或a到b)的组合及其关联的编码为 字符集
同样,如果要在两个字母之间进行比较字符串值,例如 A和B。最简单的方法是使用A的编码为0,B的编码为1。从编码中可以明显看出,0小于1,所以我们可以说 A小于B
MySQL 支持各种字符集,并且每个字符集始终使用至少一个排序规则。排序规则定义了一组规则,用于比较字符集中的字符。字符集使我们可以将任何字符存储在字符串中。我们可以使用以下语句查看MySQL数据库服务器中所有可用的字符集:
SHOW CHARACTER SET;
它将返回以下输出:
MySQL Character Set
默认情况下,上面的语句在MySQL中产生所有可用的字符集。如果要获取任何特定字符集族的名称,请使用可选的 LIKE或 WHERE 子句,返回匹配的字符集名称。以下语句显示一些基于UTF(Unicode转换格式)的 Unicode字符集:
SHOW CHARACTER SET LIKE 'utf%';
我们可以看到以下输出:
MySQL Character Set
在此图中, Maxlen 列中的值表示在字符集中保存字符的字节数。 MySQL中的每个字符集都包含 单字节字符,例如latin1,latin2,cp850或 多字节字符
> latin1 是MySQL中使用的默认字符集。如果我们将来自多种语言的字符或符号存储在一列中,则将使用utf8或ucs2之类的Unicode字符集。
MySQL LENGTH()函数返回字符串的字节长度, CHAR_LENGTH()函数用于查找字符串的长度(以字符为单位)。如果我们使用LENGTH()函数来计算包含多字节字符的字符串的长度,则得到的结果将比CHAR_LENGTH()的结果高。以下示例更清楚地说明了使用ucs2字符集的情况。
SET @str = CONVERT('MySQL Character Set' USING ucs2);
SELECT LENGTH(@str), CHAR_LENGTH(@str);
我们可以看到以下输出,其中LENGTH函数返回的结果大于CHAR_LENGTH()的结果:
MySQL字符集
CONVERT 函数用于将字符串转换为特定字符集。上面的示例将MySQL字符集字符串转换为ucs2字符集。由于字符集ucs2包含两个字节的字符,因此 @str 的字节长度大于其以字符为单位的长度。
同样,我们将看到另一个示例。请注意,许多字符集包含多字节字符,但它们的字符串仅包含单字节字符,例如utf8,如以下语句所示:
SET @str = CONVERT('MySQL Character Set' USING utf8);
SELECT LENGTH(@str), CHAR_LENGTH(@str);
我们可以看到以下输出:
MySQL Character Set
但是,如果字符集utf8字符串包含任何 特殊字符,其长度(以字节为单位)不同。请参见以下示例:
SET @string = CONVERT('pingüino' USING utf8);
SELECT LENGTH(@string), CHAR_LENGTH(@string);
我们将得到如下输出:
MySQL字符集

字符集转换

MySQL主要提供两个函数来执行不同字符集之间的字符串转换。这些函数是 CONVERT() CAST()。在上面的示例中,我们已经看到了CONVERT函数的工作。在这里,我们将仅看到与CONVERT函数类似的CAST函数。
以下是 CONVERT()函数的基本语法:
CONVERT(expression USING character_set_name)
以下是 CAST()函数的基本语法:
CAST(string AS character_type CHARACTER SET character_set_name)
请参见下面的示例,该示例使用CAST函数在不同的字符集之间进行转换:
SELECT CAST(_latin1 'MySQL character set' AS char CHARACTER SET utf8mb4) CHAR_SET;
它将返回以下输出:
MySQL字符集

为客户端连接配置字符集

当数据库应用程序与MySQL服务器交换数据时,它将使用名为latin1的默认字符集。如果应用程序将Unicode字符串存储在字符集UTF8中,则数据库应用程序中的默认字符集latin1可能不足。因此,当我们的应用程序连接到MySQL数据库服务器时,需要指定正确的字符集。
我们可以使用以下一种方式为客户端连接配置字符集:
当客户端与MySQL数据库服务器连接时,我们可以使用 SET NAMES 命令。例如,如果需要为客户端连接设置 UTF8MB4 Unicode字符集,我们将使用以下语句:
SET NAMES 'utf8mb4';
在MySQL中,MySQL连接器提供了一些其他字符集。假设如果使用的是 PHP PDO ,则可以将数据源名称中的字符集设置为以下语句:
$dsn ="mysql:host=$host;dbname=$db;charset=utf8";
如果我们的数据库应用程序支持- default-character-set 选项,我们还可以用来设置字符集。例如,MySQL客户端工具始终支持此选项,可以使用以下语句在配置文件中对其进行如下设置:
[mysql]
default-character-set= utf8
为了确保我们使用的哪种方式,数据库应用程序使用的字符集应与MySQL服务器中存储的字符集匹配。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4