| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
这些属性中,我们的目标其实就是把那些编码全都改为utf-8,而经过我测试下来,其中真正影响的值应该是character_set_databasecharacter_set_servercharacter_set_system这个三个值,尤其是第一个,如果它不是utf-8,无论再怎么样都是会出现问号的,而像上面这样的结果,中文其实也是显示正常的,这点我自己也觉得挺奇怪的还。
4 将数据库的编码修改为utf-8,执行如下语句
mysql>set names utf8;
特别注意,在MySQL里,utf-8编码中间是没有连接符的,这个特别要注意!
5 退出MySQL
mysql>exit;
6 编辑MySQL的配置文件
vim /etc/my.cnf
7 将配置文件修改成如下情况:
[mysqld]
datadir=/var/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
default-character-set = utf8
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
其实就是加了下面这一句:
default-character-set = utf8
8 重启MySQL
/etc/init.d/mysqld start
这样配置下来,数据库乱码问题就可以解决了。
当然数据库乱码也不仅仅是数据库配置问题,还可能由于页面文件本身的编码,页面文件传给程序时的编码等地方需要注意,目前的解决方法其实就是统一成utf-8!









