避免中文乱码的完整流程:
# 建库时,指定字符集和排序规则
CREATE DATABASE `company` CHARACTER SET utf8 COLLATE utf8_general_ci;
# 建表时,指定字符集
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL auto_increment,
`name` varchar(20) NOT NULL,
`address` varchar(100) NOT NULL,
`entrytime` datetime NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=100000051 DEFAULT CHARSET=utf8;
# 修改配置文件,增加如下配置项
# Linux下,配置文件为/etc/my.cnf
# Windows下,配置文件为C:\Program Files\MySQL\my.ini
[mysqld]
default-character-set = utf8
[client]
default-character-set = utf8
# 重启mysql服务
# Linux下
service mysqld restart
# Windows下(假如对应的服务名为mysql5)
net stop mysql5
net start mysql5
如果仍然没有解决乱码问题,先来科普一下:
# 查看MySQL的编码:show variables like "%char%";
# 各项的含义:
character_set_server:默认的内部操作字符集
character_set_client:来自客户端的数据使用的字符集
character_set_connection:连接层字符集
character_set_results:发往客户端的结果的字符集
character_set_database:当前选中数据库的默认字符集
character_set_system:系统元数据(字段名等)字符集
# 再看看这个图:
# 分析问题所在,如果上述各项都是utf8,请排查客户端程序(如PHP)。
下面以PHP为例:
# 创建数据库连接时,就设置一下,见截图:
# 因为使用了json_encode( )方法,所以要在其前后做些擦屁股的工作:
# 擦在前面,见截图:
# 擦在后面,见截图:
参考:
#《深入Mysql字符集设置[精华结合]》http://www.jb51.net/article/30864.htm
#《PHP+MYSQL 出现乱码的解决方法》http://www.cnblogs.com/pifoo/archive/2011/05/21/mySql.html
#《笔记:PHP查询mysql数据后中文字符乱码》http://www.cnblogs.com/kinglau/p/3904475.html
#《PHP json_encode中文乱码解决方法》http://www.cnblogs.com/jisheng/archive/2012/02/13/2350040.html