MySQL修改字符集
MySQL修改字符集
字符集乱码原因
如果在建库建表的时候,没有明确指定字符集,则采用默认的字符集 latin1,其中是不包含中文字符的。
查看默认的编码字符集:
永久修改数据库字符集
-
修改配置文件
在/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> 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’ | 修改表的字符集 |