`

【MySQL】字符集设置

 
阅读更多

较真点说,“字符集”指多个字符的合集,“字符编码”指对字符集中的字符进行编码的方式(方便信息传输)。

字符集 与 字符编码 是 1:N 的关系。

如,UTF-8 是针对 Unicode字符集 的一种编码方式。

在实际使用场景中,往往用 “字符集(Character Set)是xx” 来表示使用了哪种具体的 字符编码方式。

如 “此处使用的字符集是 UTF-8” 这句话其实是说 “此处使用了 Unicode 字符集,编码方式为 UTF-8”。

 

MySQL中的字符编码

在使用MySQL时,有多个数据传输点需要进行字符编码转换。每个转换点都有相应的系统变量来指示采用哪种字符编码。

 

字符集(编码)相关系统环境变量

可通过以下语句查询相关变量值。MySQL Workbench 中也有查看系统变量的界面。

show variables like 'character%';

 

变量名 值(示例) 含义
character_set_client utf8

当前客户端所采用的字符编码。

用于解析客户端发出的语句。

character_set_connection utf8

当前连接层所采用的字符编码。

用于解析未指定字符编码的文本,以及将数字转换为字符串。

character_set_database utf8

当前所选默认数据库的字符编码。

如果选择另一个database作为默认数据库,该变量值也会随着改变;

如果未选择默认数据库,则该变量值取自 character_set_server

character_set_filesystem binary

用于 解释(interpret)文件名字符串。

LOAD_FILE() 这类方法就会用到。

文件名会从 character_set_client 转换为 character_set_filesystem。

默认值为 binary,这意味着无需转换。

character_set_results utf8

当前采用的查询结果字符编码。

MySQL向客户端返回查询结果时,会将结果数据按此编码方式编码。

character_set_server utf8  MySQL服务端的默认字符编码。
character_set_system utf8

MySQL服务端用于存储 标识符(identifier) 的字符编码。

该变量值永远为 utf8

character_sets_dir  /opt/mysql/share/charsets/  字符集(字符编码)的安装路径

 

MySQL支持的字符集(字符编码)

可通过以下语句查询MySQL支持的字符集(字符编码):

show character set;

 

MySQL字符编码转换

 

字符集(字符编码)设置准则

设置字符集(字符编码)是为了在方便使用的情况下,尽可能减少字符编码方式转换。

  • Column(字段)的字符集:业务需要存什么字符类型,就选什么字符集

    MySQL采用类似继承的方式指定Table的默认字符集。
    每个 database 和 table 都有自己的字符集。
    如果未显式指定 column 的字符集,column 将采用所在 table 的字符集;
    如果未显式指定 table 的字符集,table 将采用所在 database 的字符集;
    如果未显式指定 databae 的字符集,database 将采用MySQL Server的字符集。

  • 根据客户端的实际需要选择 character_set_client、character_set_connection、character_set_results
  • character_set_client 与 character_set_connection 保持一致。

实际上,各种MySQL客户端工具框架一般都会让这三个值保持一致:character_set_client、character_set_connection、character_set_results。如,MySQL自带的命令行客户端允许用户设置启动参数 “default_character_set”,上述三个变量都会使用该值。

因为国际化(支持各种字符)是很常见的需要,所以绝大多数系统都采用 UTF-8。

关于为了支持表情符等特殊字符(非BMP)而使用 utf8mb4:这也许是见仁见智的选择。有些人选择 utf8mb4,也有些人选择自己搞一套特殊的“编码”规则(在应用程序端有额外的编解码操作)。

 

MySQL字符校对规则(Collation)

字符校对规则是用于字符比较和排序的一套规则。MySQL中,每种字符编码都有对应的默认校对规则。可通过以下语句查看MySQL支持的Collation:

show collation;

 

utf8_general_ci 和 utf8_unicode_ci 是两个典型的 Collation。两者都是大小写不敏感的。虽然 utf8_general_ci 可以使性能更好一点点,但对于绝大多数应用而言,这并不是性能瓶颈,对整体性能而言其提升效果微不足道。所以对于语言字符范围非常广的业务场景,还是推荐用 utf8_unicode_ci 以获得更好的支持。
(utf8_bin 是大小写敏感的。)

另外,很多人推荐使用 utf8mb4。其对应的校对规则可选 utf8mb4_unicode_ci

 

  • 大小: 37.3 KB
分享到:
评论

相关推荐

    mysql字符集设置

    MySQL字符集设置是数据库管理中的一个重要环节,尤其是在处理多语言数据或者有特殊字符需求的应用中。字符集决定了数据库、表以及字段如何存储和显示字符,影响到数据的正确性及兼容性。以下将详细讲解MySQL字符集的...

    Mysql字符集设置原理及常见问题解决

    MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...

    带你5分钟读懂MySQL字符集设置

    MySQL字符集和字符序是数据库管理系统中至关重要的概念,它们决定了数据如何被编码和比较。字符集是指一组特定的字符及其对应的编码,而字符序则是规定字符比较的规则。理解并正确设置这两个参数对于避免“乱码”...

    设置mysql字符集

    当遇到数据乱码的情况时,首先应检查数据库、表、字段的字符集设置是否一致,并且与服务器及客户端的字符集相匹配。如果发现不一致,可能需要更新表结构或导入数据时的字符集,以保证数据的一致性和正确性。 例如,...

    Mysql字符集设置原理及常见问题解决.pdf

    mysql遇到字符集问题的常见解决方法,给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数 值就是字符的编码 (Encoding) 。例如,我们给字符 'A'赋予数值 0,给字符 'B'赋予数 值 1,则 0 ...

    深入Mysql字符集设置分析

    MySQL字符集设置是数据库管理中一个至关重要的环节,它涉及到数据的存储、比较和检索。本文将深入探讨MySQL字符集的基本概念,字符集设置,以及常见的问题与解决方案。 首先,我们要理解字符集和字符序的基本概念。...

    mysql字符集查看以及修改

    重启 MySQL 服务后,可以使用以下命令查看字符集设置: mysql> show variables like 'collation_%'; mysql> show variables like 'character_set_%'; 这将显示当前 MySQL 数据库的字符集信息。 总结 MySQL 字符...

    设定mysql字符集解决终端乱码

    - 若要永久改变字符集设置,可以在 MySQL 配置文件(通常是 `my.cnf` 或 `my.ini`)中进行设置。具体步骤如下: 1. 打开配置文件,在 `[mysqld]` 段落下添加以下行: ```ini [mysqld] character-set-server=utf...

    mysql字符集转换

    ### MySQL字符集转换详解 #### 一、引言 在MySQL数据库管理中,字符集的正确设置至关重要。它直接影响到数据的存储与检索效果,尤其是对于包含多种语言文本的应用场景而言。本文将围绕“MySQL字符集转换”这一主题...

    mysql字符集等常用命令

    ### MySQL字符集设置与解决UTF-8乱码问题 在MySQL数据库中,字符集的设置对于数据的正确存储和检索至关重要。特别是在使用UTF-8字符集时,如果配置不当很容易出现乱码问题。本文将详细介绍如何通过MySQL命令来正确...

    linux修改mysql字符集

    ` 命令来查询 MySQL 的字符集设置。 在 MySQL 中,有多个变量可以影响 MySQL 的性能。下面我们将介绍一些重要的变量: 1. back_log:该变量指定了 MySQL 能够处理的连接数量。增加该值可以提高 MySQL 的并发处理...

    查看和设置MySQL数据库字符集[归纳].pdf

    #### 三、查看MySQL字符集设置 在MySQL中,可以通过查询`SHOW VARIABLES`来查看当前数据库或连接的字符集设置情况: ```sql SHOW VARIABLES LIKE '%character%'; ``` 此命令会返回以下几项重要的设置: - `...

    精通MySQL字符集与校对集

    ### 精通MySQL字符集与校对集 在MySQL中,正确地管理和配置字符集与校对集对于确保数据的正确性和一致性至关重要。字符集主要用于定义如何存储和表示文本数据,而校对集则定义了如何比较这些文本数据。本篇文章将...

    linux下设置mysql字符集为UTF-8以及mysql重启.docx

    总结一下,设置Linux下MySQL字符集为UTF-8主要包含以下几个步骤: 1. 找到`my.cnf`配置文件。 2. 在`[mysqld]`段落下添加UTF-8相关配置。 3. 保存并关闭配置文件。 4. 重启MySQL服务,使配置生效。 通过这些操作,...

    深入Mysql字符集设置[精华结合]

    MySQL字符集设置是数据库管理中的一个重要环节,它涉及到数据的存储、检索和比较。字符集定义了字符的编码方式,而字符序则规定了字符之间的比较规则。在MySQL中,字符集和字符序的选择对数据库的多语言支持、数据...

    关于MySQL字符集查看与修改

    ### 关于MySQL字符集查看与修改 #### MySQL的字符集支持概述 MySQL的字符集支持主要涉及两个方面:**字符集(Character set)**和**排序方式(Collation)**。字符集定义了如何存储和表示不同的字符,而排序方式则...

    MYSQL修改字符集默认问题

    ### 一、理解MySQL字符集 在深入探讨修改字符集的方法之前,我们首先需要了解MySQL中的字符集概念。字符集是指一系列字符及其编码方式的集合。在MySQL中,常用的字符集有`latin1`、`utf8`等。其中: - **`latin1`*...

    MYSQL字符集乱码的解决

    ### MySQL字符集乱码问题及解决方案 #### 一、问题背景 在使用MySQL数据库时,很多用户会遇到中文字符显示为乱码的情况。这通常是因为MySQL数据库中的字符集设置不一致导致的。例如,在命令行下操作MySQL时,可能会...

    查看mysql字符集MySQL 乱码的根源是的 MySQL 字符

    查看mysql字符集MySQL 乱码的根源是的 MySQL 字符

    mysql字符集和校对集

    ### MySQL字符集与校对集详解 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,在处理各种语言环境下的数据时,字符集和校对集的正确配置至关重要。本文旨在深入探讨MySQL中的字符集(Character ...

Global site tag (gtag.js) - Google Analytics