mysql修改默认服务器编码,ubuntu 服务器 mysql server 修改 默认编码为 utf8-mb4

为什么要启用uff8-mb4呢,因为mysql以前的版本的默认utf8是阉割版,最多只用3个字节存贮一个字符,某些信息无法存入数据库。所以在后期的版本中就有了utf8-mb4,但还不是默认值,也需要我们放弃以前的老的处理方法。

uff8和 ut8mb4 的区别就在于最多只支持 3 个字节,因此不支持 Unicode 的补充字符集。保存数据时会出1366错误。

Unicode 是一个字符集,包含 17 个 Plane,每个 Plane 65536 个码点,Plane0 是 BMP,其他 Plane 是补充字符

UTF-8 是一种编码规范,用 1~4 个字节编码 Unicode 字符,兼容 ASCII,中文 3 字节,补充字符如 emoji 需要 4 字节)

那么为了完全启用utf8mb4编码,除了 server 编码,记得也要修改连接的编码(客户端编码)。

首先 设置服务器默认字符集为 utf8mb4,ubuntu 18server mysql默认安装mysql5.7所以还需要修改,期待ubuntu20以后的版本能够更新到5.8,就不需要如此操作了,因为在mysql5.8以后的版本中默认就是utf8mb4。

只需要关心5个系统变量,这5个都改为 utf8mb4 则修改成功:

character_set_client

character_set_connection

character_set_results

character_set_server

character_set_database

my.cnf 是MySQL 的配置文件,ubuntu把mysql的配置文件也分成几个文件存放,主配置文件在 /etc/mysql/my.cnfsudo vim /etc/mysql/my.cnf

[mysqld]

character-set-server=utf8mb4

[client]

default-character-set=utf8mb4

然后重启,sudo service mysql restart

在命令行下 验证

mysql> show variables like "%char%";

当然也可以在phpmyadmin中去查看。以前创建的数据库和表还是原来的编码。那如果要修改以前创建的数据转码为utf8mb4那是一个大工程,最好编一个mysql的执行脚本,然后修改。

MySQL 中字符集相关参考变量

character_set_client:客户端请求数据的字符集

character_set_connection:从客户端接收到数据,然后传输的字符集

character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server指定的字符集,这个变量建议由系统自己管理,不要人为定义。

character_set_filesystem:把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的

character_set_results:结果集的字符集

character_set_server:数据库服务器的默认字符集

character_set_system:存储系统元数据的字符集,总是 utf8,不需要设置

另外,在新创建数据库的时候,需要把创建的字段等 以前使用utf8的地方更改为utf8mb4。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值