千家信息网

MySQL字符集的概念及设置方法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"MySQL字符集的概念及设置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、字
千家信息网最后更新 2026年10月31日MySQL字符集的概念及设置方法

本篇内容介绍了"MySQL字符集的概念及设置方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、字符集基本概念
1.字符(Character)是指人类语言中最小的表义符号。例如'A'、'B'等;
2.给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符'A'赋予数值0,给字符'B'赋予数值1,则0就是字符'A'的编码;
3.给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,给定字符列表为{'A','B'}时,{'A'=>0, 'B'=>1}就是一个字符集;
4.字符序(Collation)是指在同一字符集内字符之间的比较规则;
5.确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;
6.每个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation);
7.MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾。例如:在字符序"utf8_general_ci"下,字符"a"和"A"是等价的;

二、MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列.传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置.
(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)安装 MySQL选择多语言支持,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,保证缺省情况下所有的数据库所有表的所有列的都用 UTF-8 存储。

三、MySQL字符集设置
1.系统变量:
- character_set_server:默认的内部操作字符集
- character_set_client:客户端来源数据使用的字符集
- character_set_connection:连接层字符集
- character_set_results:查询结果字符集
- character_set_database:当前选中数据库的默认字符集
- character_set_system:系统元数据(字段名等)字符集
- 还有以collation_开头的同上面对应的变量,用来描述字符序。

2.用introducer指定文本字符串的字符集:
- 格式为:[_charset] 'string' [COLLATE collation]
- 例如:
SELECT _latin1 'string';
SELECT _utf8 '你好' COLLATE utf8_general_ci;
- 由introducer修饰的文本字符串在请求过程中不经过多余的转码,直接转换为内部字符集处理。

四、修改my.cnf设置客户端与服务端字符集
1.停止MySQL;service mysqld stop

2.备份my.cnf文件:cp /etc/my.cnf /etc/my.cnf.bak

修改my.cnf
vi /etc/my.cnf
在[client]下添加,client为控制客户端
default-character-set=utf8
在[mysqld]下添加,mysqld为控制服务器端
default-character-set=utf8

3.重启MySQL
spark220:mysqladmin:/usr/local/mysql:>service mysqld restart

4.查看字符集是否已经修改
mysql>show variables like '%char%';

注:修改配置文件,并重启服务器,才可以永久生效

五、检测字符集
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;
mysql> SHOW VARIABLES LIKE 'character%';
mysql> SHOW VARIABLES LIKE 'collation%';
mysql> SQL函数HEX、LENGTH、CHAR_LENGTH
mysql> SQL函数CHARSET、COLLATION

MySQL的字符集主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库、表、列等四个级别指定。对于使用者来说,一般推荐使用utf8编码来存储数据。而要解决乱码问题,不单单是MySQL数据的存储问题,还和用户的程序文件的编码方式、用户程序和MySQL数据库的连接方式都有关系。
客户端的连接是没有作用的,客户端这时候一般需要指定utf8方式连接才能避免乱码。也就是传说总的set names命令。
set names utf8命令对应的是服务器端以下几个命令:
  SET character_set_client = utf8;
  SET character_set_results = utf8;
  SET character_set_connection = utf8;
注:三个参数是不能写在配置文件my.cnf里的,只能通过set命令来动态修改,但在init_connect里设置,这个命令在每
个普通用户连接上来的时候都会触发执行,可以在[mysqld]部分增加以下一行设置连接字符集:
在[mysqld]下添加:
  init_connect = 'SET NAMES utf8'

总结:
1、编译安装MySQL的时候指定两个参数使用utf8编码。
2、配置文件my.cnf设定两个参数,同时设置init_connect参数。
3、配置文件my.cnf设定两个参数,同时客户端的连接指定set names命令。
4、配置文件my.cnf里的client和server处加入default-character-set参数方便管理。

"MySQL字符集的概念及设置方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

字符 字符集 数据 文件 配置 编码 参数 命令 数据库 客户 两个 数值 客户端 就是 程序 服务 内容 大小 方式 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 工业互联网科技新基建 互联网金融 科技金融 互联网科技金融公司 奇酷互联网络科技公司 丰台科技园 互联网 沃里互联网科技 科技伦理 互联网公司 联恩商钥互联网科技有限公司 互联网和高科技公司 中国科技互联网公司收入 互联网对科技的发展 厦门比较好的科技互联网公司 消费医药和互联网科技 互联网科技人工智能实验室 电子商务与互联网科技的关系 四川互联网展示科技馆设计 互联网相关科技技术 互联网与数字科技关系 互联网领先科技成果宣传视频 恒生科技互联网指数十大成分股 南京欣网互联网络科技 互联网科技金融 唐信互联网科技 大连 甘肃拓世互联网科技有限公司 广西拼得多互联网科技有限公司 互联网公司会议桌创意科技软装饰 央行互联网金融科技公司 智帮互联网科技公司最近动向 互联网科技资金流入 长沙渺峰互联网科技有限公司
0