三、解决方案
了解了 MySQL 4.1.x 以上版本字符集处理的过程,我们就知道了怎么从原理上解决这个问题。
思路:让服务器端和客户端的字符集保持一致。
服务器端的编码是由字符集(Character Set)和校对规则(Collation)决定的。
上面提到,MySQL 中是根据下面几个变量确定服务器端和客户端用的什么字符集:
character_set_client 客户端字符集
character_set_connection 客户端与服务器端连接采用的字符集
character_set_results SELECT查询返回数据的字符集
character_set_database 数据库采用的字符集
也就是说,只要保证这几个变量采用一致的字符集,就不会出现乱码问题了。
查看系统的字符集用下面的命令:
1mysql>SHOW VARIABLES LIKE 'character_set_%'
2+--------------------------+-----------------------------------------+
3|Variable_name |Value |
4+--------------------------+-----------------------------------------+
5|character_set_client |utf8 |
6|character_set_connection |utf8 |
7|character_set_database |utf8 |
8|character_set_filesystem |binary |
9|character_set_results |utf8 |
10|character_set_server |utf8 |
11|character_set_system |utf8 |
12|character_sets_dir |E:usrMySQL Server 5.0sharecharsets |
13+--------------------------+-----------------------------------------+
148rows in set (0.00sec)15