MySQL - 字符集

MySQL - 字符集 首页 / MySQL入门教程 / MySQL - 字符集

MySQL中的一个字符集是一组字符(characters),编码(encodings),符号(symbols),它在字符串中是合法的。本文介绍了无涯教程如何在MySQL中获取所有字符集,如何为客户端连接配置正确的字符集,以及如何在多个字符集之间转换字符串。

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或multi-byte字符

latin1 是MySQL中使用的默认字符集。如果无涯教程在一列中存储来自各种语言的字符或符号,将使用UNICODE字符集(如UTF8或UCS2)。

MySQL length()函数以字节为单位返回字符串的长度,而 char_length()函数用于在字符中找到字符串的长度。如果使用length()函数来计算包含多字节字符的字符串的长度,将获得高于char_length()结果的结果。以下示例更清楚地解释了使用UCS2字符集的更清晰。

SET @str = CONVERT('MySQL Character Set' USING ucs2);
SELECT LENGTH(@str), CHAR_LENGTH(@str);

可以看到如下所示,其中长度函数返回大于char_length()结果的结果:

MySQL Character Set

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 Character Set

字符集转换

MySQL主要提供两个函数来执行不同字符集之间的字符串的转换。这些函数是 convert() cast()。无涯教程已经看到了上述示例中的转换函数的工作。在这里,将仅看到仅与转换函数类似的传导函数的工作。

以下是 convert()函数的基本语法:

CONVERT(expression USING character_set_name)

以下是 cast()函数的基本语法:

CAST(string AS character_type CHARACTER SET character_set_name)

请参阅以下示例,使用CAST函数在不同字符集之间进行转换:

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-character-set.html

来源:LearnFk无涯教程网

SELECT CAST(_latin1 'MySQL character set' AS CHAR CHARACTER SET utf8mb4) CHAR_SET;

它将返回输出,如下所示:

MySQL Character Set

客户端连接配置字符集

当数据库应用程序与MySQL Server交换数据时,它使用命名为Latin1的默认字符集。如果应用程序在字符集UTF8中存储Unicode字符串,则数据库应用程序中的默认字符集Latin1可能不够。因此,需要在的应用程序连接到MySQL数据库服务器时指定适当的字符集。

可以使用以下方式之一配置客户端连接的字符集:

  • 当客户端与MySQL数据库服务器连接时,可以使用 set NAMES命令。例如,如果需要设置用于客户端连接的 utf8mb4 Unicode字符集,将使用以下语句:
SET NAMES 'utf8mb4';
  • 在MySQL中,MySQL连接器提供了一些其他字符集。假设使用 php pdo,然后可以将数据源名称中的字符设置为以下语句:
$dsn ="mysql:host=$host;dbname=$db;charset=utf8";
  • 如果的数据库应用程序支持 - 默认字符集选项,无涯教程也可以使用该字符集。例如,MySQL客户端工具始终支持此选项,下面的语句可用于将其设置为如下所示:
[mysql]
default-character-set= utf8

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Python核心技术与实战 -〔景霄〕

OpenResty从入门到实战 -〔温铭〕

Kafka核心技术与实战 -〔胡夕〕

后端存储实战课 -〔李玥〕

深入浅出云计算 -〔何恺铎〕

Serverless入门课 -〔蒲松洋(秦粤)〕

基于人因的用户体验设计课 -〔刘石〕

爆款文案修炼手册 -〔乐剑峰〕

结构会议力 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)