日期:2014-05-16  浏览次数:20788 次

PHP MYSQL配合使用的乱码解决
当你的一段PHP程序写好后,会上传到服务器,如果服务器是自己搭建的,做mysql的设置也方便,但是如果是上传到虚拟主机或者别人的主机,做mysql的设置就很不方便。

所以当我们写php和mysql程序时,最好一步到位,不要给以后搬迁的过程中带来乱码问题。

一般来讲,乱码都是字符集引起的。而避免以上所述的问题,主要关注以下环节:

1.mysql数据库服务会有一个默认的字符集,如果你创建数据库时不指定字符集,那么系统默认使用mysql服务默认的字符集。mysql的数据表,可以针对某字段做字符集设定

2.PHP的页面有字符集的设定,影响到浏览器以指定的字符集解析网页

3.PHP连接mysql时,的数据库连接也是有字符集设定的,也就是客户端字符集。

只有当这三者保持一致时,你的页面才不会出现乱码。

针对以上三个环节,解决的办法如下:

1.建数据库时指定字符集
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `number` varchar(21) DEFAULT NULL,
  `display_name` varchar(100) DEFAULT NULL,
  `number_desc` varchar(100) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=gbk


2.建前面的blog《解决网页乱码》

3.设定php连接的字符集
$linkID=@mysql_connect("localhost","root","000000") or die("you could notconnect mysql");
@mysql_select_db("test") or die("could not select database!");
mysql_query("SET NAMES 'GBK'");


做到以上3点,系统字符集已统一,不会出现乱码问题。