mysql 编码问题

mysql的默认编码是latin1,不支持中文。
怎么修改mysql的默认编码?本文以utf-8默认编码修改为例来介绍。

创建数据库并指定编码方式:

create database aa default character set 'utf-8';

上面是在创建数据库时指定数据库的编码方式.下面为大家分享一种最简单最彻底的修改mysql默认编码的方法,一起来看看吧。

注意,修改mysql默认编码的方法,要修改的地方非常多,相应的修改方法也很多。

一、windows系统下面
1、中止mysql服务
2、在mysql的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭.
(mysqld中增加如果出错,可以试 character-set-server=utf8)
4、启动mysql服务
二、linux系统下面
1、中止mysql服务(bin/mysqladmin -u root shutdown 或者 service mysqld stop)
2、在/etc/下找到my.cnf,如果没有就把mysql的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可(针对编译安装的用户)
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动mysql服务(bin/mysqld_safe & 或者 service mysqld start)

以上修改一劳永逸,mysql一切相关的默认编码均为utf-8了,创建新表格时无需再次设置。

提示:当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码。

查看数据库的当前编码:

mysql -uroot -p
mysql> use db;
mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id:          116
Current database:       blog
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.73 Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    gbk
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 27 min 57 sec

更改方式:

alter database db_name default character set 'utf-8';

注意:如果是高版本的mysql中,将mysql默认编码修改为utf-8?只需在my.ini中的[mysqld]组名的末尾添加character-set-server=utf8即可。

mysqld:unknown variable 'default-character-set=utf8'的错误原因是什么?
因为参数:default-character-set=utf8 在较新版本的mysql 中已移除。
建议高版本的mysql使用”character-set-server“,而不要使用“default-character-set”。

查看字符编码:
设置好后,如何查看设置的字符编码是否可以?

查看方法,在命令提示符下输入:

show variables like 'char%'

备份:

导出数据:

mysqldump -uroot -p'' dbname --default-character-set=utf8 > dbname.sql

查看导出数据的编码方式:

file dbname.sql
dbname.sql: UTF-8 Unicode English text, with very long lines

转换为要用的编码:

iconv -f utf-8 -t gbk base_user.sql >base_user_gbk.sql

 

 

二〇一五年三月三十日 09:11:31

THE END