首页 > 数据库 > MySQL > 正文

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

2024-07-24 12:50:42
字体:
来源:转载
供稿:网友

一、内容概述

在MySQL的使用过程中,了解字符集、字符序的概念,以及不同设置对数据存储、比较的影响非常重要。不少同学在日常工作中遇到的“乱码”问题,很有可能就是因为对字符集与字符序的理解不到位、设置错误造成的。

本文由浅入深,分别介绍了如下内容:

    字符集、字符序的基本概念及联系
    MySQL支持的字符集、字符序设置级,各设置级别之间的联系
    server、database、table、column级字符集、字符序的查看及设置
    应该何时设置字符集、字符序

    二、字符集、字符序的概念与联系

    在数据的存储上,MySQL提供了不同的字符集支持。而在数据的对比操作上,则提供了不同的字符序支持。

    MySQL提供了不同级别的设置,包括server级、database级、table级、column级,可以提供非常精准的设置。

    什么是字符集、字符序?简单的来说:

      字符集(character set):定义了字符以及字符的编码。 字符序(collation):定义了字符的比较规则。

      举个例子:

      有四个字符:A、B、a、b,这四个字符的编码分别是A = 0, B = 1, a = 2, b = 3。这里的字符 + 编码就构成了字符集(character set)。

      如果我们想比较两个字符的大小呢?比如A、B,或者a、b,最直观的比较方式是采用它们的编码,比如因为0 < 1,所以 A < B。

      另外,对于A、a,虽然它们编码不同,但我们觉得大小写字符应该是相等的,也就是说 A == a。

      这上面定义了两条比较规则,这些比较规则的集合就是collation。

        同样是大写字符、小写字符,则比较他们的编码大小; 如果两个字符为大小写关系,则它们相等。

        三、MySQL支持的字符集、字符序

        MySQL支持多种字符集 与 字符序。

          一个字符集对应至少一种字符序(一般是1对多)。 两个不同的字符集不能有相同的字符序。 每个字符集都有默认的字符序。

          上面说的比较抽象,我们看下后面几个小节就知道怎么回事了。

          1、查看支持的字符集

          可以通过以下方式查看MYSQL支持的字符集。

          方式一:

          mysql> SHOW CHARACTER SET;+----------+-----------------------------+---------------------+--------+| Charset | Description | Default collation | Maxlen |+----------+-----------------------------+---------------------+--------+| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 || dec8 | DEC West European | dec8_swedish_ci | 1 |...省略

          方式二:

          mysql> use information_schema;mysql> select * from CHARACTER_SETS;+--------------------+----------------------+-----------------------------+--------+| CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION | MAXLEN |+--------------------+----------------------+-----------------------------+--------+| big5 | big5_chinese_ci | Big5 Traditional Chinese | 2 || dec8 | dec8_swedish_ci | DEC West European | 1 |...省略
          发表评论 共有条评论
          用户名: 密码:
          验证码: 匿名发表