MySQL修改字符集

MySQL修改字符集

字符集乱码原因

如果在建库建表的时候,没有明确指定字符集,则采用默认的字符集 latin1,其中是不包含中文字符的。
查看默认的编码字符集:
MySQL修改字符集

永久修改数据库字符集

  • 修改配置文件
    在/usr/share/mysql/ 中找到 my.cnf 的配置文件,拷贝其中的 my-huge.cnf 到 /etc/ 并命名为 my.cnf 。添加以
    下内容后再重启服务。
    [client]
    default-character-set=utf8
    [mysqld]
    character_set_server=utf8
    character_set_client=utf8
    collation-server=utf8_general_ci
    [mysql]
    default-character-set=utf8

  • 注意:必须将文件拷贝到指定路径,且名称为 my.cnf

  • 再次查看:
    MySQL修改字符集

  • 注意:已经创建的数据库的设定不会发生变化,参数修改只对新建的数据库有效!

修改已创建库、表字符集

  • 修改数据库的字符集
    mysql> alter database mydb character set ‘utf8’;
  • 修改数据表的字符集
    mysql> alter table mytbl convert to character set ‘utf8’;

修改已经乱码数据

无论是修改 mysql 配置文件或是修改库、表字符集,都无法改变已经变成乱码的数据。
只能删除数据重新插入或更新数据才可以完全解决

MySQL常用命令

SQL 语句 描述 备注
show databases 列出所有数据库
create database 库名 创建一个数据库
create database 库名 character set utf8 创建数据库,顺便执行字符集为utf-8
show create database 库名 查看数据库的字符集
show variables like ‘%char%’ 查询所有跟字符集相关的信息
set [字符集属性]=utf8 设置相应的属性为 utf8设置相应的属性为 utf8 只是临时修改,当前有效。服务重启后失效。
alter database 库名 character set ‘utf8’ 修改数据库的字符集
alter table 表 名 convert to character set’utf8’ 修改表的字符集