千家信息网

设置MySQL字符集的具体方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家主要讲的是关于设置MySQL字符集的具体方法的内容,感兴趣的话就一起来看看这篇文章吧,相信看完设置MySQL字符集的具体方法对大家多少有点参考价值吧。字符集介绍gbk/gb2312gbk
千家信息网最后更新 2026年11月03日设置MySQL字符集的具体方法

本篇文章给大家主要讲的是关于设置MySQL字符集的具体方法的内容,感兴趣的话就一起来看看这篇文章吧,相信看完设置MySQL字符集的具体方法对大家多少有点参考价值吧。

字符集介绍

  • gbk/gb2312

    gbk/gb2312
    采用双字节字符集,不论中、英文字符均使用双字符来表示,为了区分中文,将其最高位都设定成1
    gb2312是gbk的子集,gbk是gb18030的子集,gb2312仅能存储简体中文字符
    gbk包括中日韩字符的大字符集
    通常使用gbk字符集足够
    国际通用性比utf8差,不过utf8占用的数据库比gbk大(utf8是三字节字符集)

  • utf8/utf8mb4

    UTF全称(Unicode Transformation Format),是Unicode的一种存储方式,可变长度字符编码,又称万国码;
    数据库字符集尽量使用utf8(包括 connect、result、及最终html页面都必须要求一致为utf8);
    UTF8使用可变长度字节来存储 Unicode字符,例如 ASCII字母继续使用1个字节存储,重音文字、希腊字母、或西里尔字母等使用2个字节来存储,而常用的汉字就要用3个字节;也就是一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。
    utf8mb4一个字符最多能存4字节,所以能支持更多的字符集;项目中常用utf8mb4存放emoji表情;
    latin1是8bit (1 bytes)字符集,但不能覆盖亚洲、非洲语言;
    unidoce是latin1的扩展,增加了亚洲、非洲常规语言支持,但仍不支持全部语言,且ASCII用unidoce来表示效率不高(小字符集转换成大字符集,往往便随的就是字符的丢失);
    utf8是unicode的扩展;
    gbk、gb2312等字符集与utf8之间都必须通过Unicode编码才能相互转换。

字符集使用建议

1、非常肯定只有中文终端用户时,可选择gbk / gb2312

2、为了方便数据迁移、以及多种终端展示,最好是utf8

3、字符无需区分大小写时,采用默认的xx_ci校验集可以,否则选择xx_bin校验集(生产环境中,尽量不要修改校验集)

4、默认字符集是latin1,该字符集存放汉字是分开存放,以至于检索结果时不够精确,好处就是节省空间,不推荐使用

MySQL字符集范围

云服务器层(server) > 数据库成(database) > 数据表(table) > 字段(column) > 连接(connection) | 结果集(result)

MySQL字符集优先级

连接(connection) | 结果集(result) > 字段(column) > 数据表(table) > 数据库成(database) > 云服务器层(server)

char类型

char(N):N代表的是字符个数(也叫字符长度)、而非bytes
char(N):是固定长存储,占用定长的存储空间,不足的部分用空格填充;MySQL处理char(N)类型时,需要将空格strip掉后return。

存储空间:char(N)类型的存储空间和字符集有关系,结合刚才字符集的知识点,一个中文在utf8字符集中占用3个bytes、gbk占用2个bytes、数字和字符统一用一个字符表示。

存储机制:在不够N长度时,MySQL在存储数据时,需要用填充特殊的空格,而非十六进制的20

思考:
char(30),在不同的字符集中最多能存放多少个字母、汉字,以及占用空间情况
gbk: 可以存放30个字节 占用的空间30*2utf8:可以存放30个字节 占用的空间30*3

varcahr类型

varchar(N):N代表的是字符个数(也叫字符长度)、而非bytes
varchar(N):是变长存储,仅使用必要的存储空间.

存储空间:varchar(N)类型的存储空间和字符集有关系,结合刚才字符集的知识点,一个中文在utf8字符集中占用3个bytes、gbk统一占用2个bytes、数字和字符一个字符表示。

存储机制:varchar(N)字段存储实际是从第二个字节开始存储,然后用1到2个字节表示实际长度,剩下的才是可以存储数据的范围,因此最大可用存储范围是65535-3=65532字节;第一个字节标识是否为空.(长度小于255字节,使用一个字节来表示长度;大于255字节使用两个字节来表示长度)

修改数据库实例字符集

临时生效

mysql> set character_set = 'gbk';mysql> set character_set_client = 'gbk';

全局生效

mysql> set global character_set_client = 'gbk';Query OK, 0 rows affected (0.00 sec)

永久生效

vim /etc/my.cnf character-set-server=utf8

以上关于设置MySQL字符集的具体方法详细内容,对大家有帮助吗?如果想要了解更多相关,可以继续关注我们的行业资讯板块。

字符 字符集 存储 字节 数据 空间 长度 中文 类型 字母 方法 字段 空格 结果 范围 语言 汉字 支持 不够 个数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网新科技 南京欣网互联网络科技有限公司 深圳科技互联网 互联网科技作文 互联网与新科技 中国互联网科技发展 美国互联网黑科技 北京禾田雨橡互联网科技 镁科技互联网资讯平台 哈尔滨新华互联网科技 深圳互联网科技怎么样 蓝色互联网科技 深圳市运趣互联网科技有限公司 团飞科技与伯堂互联网服务平台 呼和浩特新华互联网科技学院 佛山市拉法互联网科技有限公司 科技互联网的核心竞争力 上海钢联属于互联网科技股吗 上海旺乐尼互联网科技有限公司 甘肃拓世互联网科技有限公司 华脉科技工业互联网产品 山东吉时兔互联网科技有限公司 创业天下互联网科技有限公司 湖北码尼互联网科技有限公司电话 黑科技闪耀互联网之光 玉溪互联网科技怎么选 乌苏新华互联网科技做什么的 从那以后互联网科技有限公司 易租星互联网科技有限公司
0