linux修改/etc/my.cnf
win系统修改my.ini文件
注意: 5.1版本在mysqld下设置default-character-set=utf8, 5.5的设置变了, 我使用的环境是mysql 5.5
[client] default - character - set =utf8 [mysqld] character - set -server=utf8 init_connect= 'SET NAMES utf8' [mysql] default - character - set =utf8 |
修改完成之后, 重启数据库, 可以查看
mysql> \s -------------- mysql Ver 14.14 Distrib 5.5.27, for Win32 (x86) Connection id: 33 Current database : Current user : root@localhost SSL: Not in use Using delimiter: ; Server version: 5.5.27 MySQL Community Server (GPL) Protocol version: 10 Connection : localhost via TCP/IP Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 TCP port: 3306 Uptime: 3 min 53 sec Threads: 1 Questions: 282 Slow queries: 0 Opens: 61 Flush tables: 1 Open tables: 54 Queries per second avg : 1.210 -------------- |
这样保证连接mysql之后, 默认都使用了UTF8编码
也可以查看全局变量
mysql> SHOW VARIABLES LIKE 'character_set_%' ; + --------------------------+---------------------------------------------+ | Variable_name | Value | + --------------------------+---------------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | XXX\mysql\share\charsets\ | + --------------------------+---------------------------------------------+ 8 rows in set (0.00 sec) |
mysql> SHOW VARIABLES LIKE 'collation_%' ; + ----------------------+-----------------+ | Variable_name | Value | + ----------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_general_ci | | collation_server | utf8_general_ci | + ----------------------+-----------------+ 3 rows in set (0.00 sec) |
已经建立的数据库和表需要进行修改和更新, 分别对数据库和表进行, 数据量小可以考虑导出为sql语句后修改
修改数据库, 表和字段的sql语法参考如下
修改数据库, 以test数据库为例
mysql> alter database `test` character set utf8; |
修改表为utf8, 以book表为例
mysql> alter table `book` character set utf8; |
以book表的title字段为例
mysql> alter table `books_book` modify `title` varchar (100) character set utf8; |
其中sql语句中的反引号[`]是用来转义的