MySQL 中文乱码(全)

避免中文乱码的完整流程:

# 建库时,指定字符集和排序规则

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:系统元数据(字段名等)字符集

# 再看看这个图: 

MySQL 中文乱码(全)_第1张图片

# 分析问题所在,如果上述各项都是utf8,请排查客户端程序(如PHP)。

下面以PHP为例:

# 创建数据库连接时,就设置一下,见截图:

MySQL 中文乱码(全)_第2张图片

# 因为使用了json_encode( )方法,所以要在其前后做些擦屁股的工作:
  # 擦在前面,见截图:

MySQL 中文乱码(全)_第3张图片  

# 擦在后面,见截图:

MySQL 中文乱码(全)_第4张图片


参考:

#《深入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

    


你可能感兴趣的:(mysql,PHP,中文,乱码,utf8)