MySQL中的一个字符集是一组字符(characters),编码(encodings),和符号(symbols),它在字符串中是合法的。本文介绍了无涯教程如何在MySQL中获取所有字符集,如何为客户端连接配置正确的字符集,以及如何在多个字符集之间转换字符串。
mysql 支持各种字符集,每个字符集始终使用至少一个排序规则。排序规则定义了一组规则,以比较字符集中的字符。字符集允许将任何字符存储在字符串中。可以使用以下语句查看MySQL数据库服务器中可用的所有字符集:
SHOW CHARACTER SET;
它将返回以下输出:
默认情况下,上面的语句会在MySQL中生成所有可用的字符集。如果想要获取任何特定字符集族的名称,请使用可选的 like或where子句,返回匹配的字符设置名称。以下语句显示基于UTF(Unicode转换格式)的一些 Unicode字符集:
SHOW CHARACTER SET LIKE 'utf%';
可以看到输出如下:
在上图中,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()结果的结果:
convert 函数用于将字符串转换为特定字符集。上面的示例将MySQL字符集字符串转换为UCS2字符集。由于字符集UCS2包含两个字节字符,因此 @str 以字节为单位的长度大于其字符中的长度。
再次,将看到另一个例子。值得注意的是,许多字符集包含多字节字符,但它们的字符串仅包含单字节字符,例如UTF8,如下面的语句所示:
SET @str = CONVERT('MySQL Character Set' USING utf8); SELECT LENGTH(@str), CHAR_LENGTH(@str);
可以看到输出如下:
但是,如果字符集UTF8字符串包含任何特殊字符,则其长度以字节为不同。请参见下文示例:
SET @string = CONVERT('ping?ino' USING utf8); SELECT LENGTH(@string), CHAR_LENGTH(@string);
将获得以下输出:
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 Server交换数据时,它使用命名为Latin1的默认字符集。如果应用程序在字符集UTF8中存储Unicode字符串,则数据库应用程序中的默认字符集Latin1可能不够。因此,需要在的应用程序连接到MySQL数据库服务器时指定适当的字符集。
可以使用以下方式之一配置客户端连接的字符集:
SET NAMES 'utf8mb4';
$dsn ="mysql:host=$host;dbname=$db;charset=utf8";
[mysql] default-character-set= utf8
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)