|
|
|
|
移动端

再见乱码:5分钟读懂MySQL字符集设置

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

作者:程序猿小卡来源:ITPUB|2018-01-11 11:45

【新品产上线啦】51CTO播客,随时随地,碎片化学习

再见乱码:5分钟读懂MySQL字符集设置

一、内容概述

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

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

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

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

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

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

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

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

举个例子:

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

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