MySQL默认的编码不是UTF-8的,但是作为中文用户,为了国际化,还是要用UTF-8编码,这个问题很简单。
首先可以用下面的命令看一下MySQL的编码格式mysql> show Variables like '%set%';
会得到类似下面这样的输出+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| auto_increment_offset | 1 |
| 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 | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
9 rows in set (0.00 sec)
我的编码已经都改为了utf了,所以看到的是这样的結果,如果还没有做过改变应该是latin1的编码。
然后说下怎么改变默认的编码
如果只想给某个数据库或表设置为UTF8的编码,可以用下面的MySQL命令mysql> CREATE DATABASE IF NOT EXISTS my_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
这个命令前面的意思很好理解,就是创建了一个数据库,并把默认编码设置为utf,后面的COLLATE utf8_general_ci应该就是按照utf8的格式来整理数据,我也不清楚具体是什么意思。
mysql> CREATE TABLE my_table (name VARCHAR(20) NOT NULL) type=MyISAM DEFAULT CHARSET utf8;
上面的命令创建了一个表,并把默认编码设置为utf8 。
上面的方式都是给特定的数据库来执行的编码设置,接下来看看怎么把MySQL的其他默认编码都改成utf8,这个只需要在/etc/my.cnf中找到[client]和[mysqld],然后在它们下面均加上default-character-set=utf8就可以了。别忘了重启下mysql服务