专注于WEB技术的IT博客

将数据库中文乱码解决方法进行到底

时间:2012-10-24分类: Mysql浏览:3821
分享到:

      最近还在不断完善WBlog博管程序,到现在为止,WBlog还没有安装程序,这两天正忙着写,到这里安装程序已告一段落,基本上可以安装了,但就是还没有检测PHP版本和MYSQL版本的一些参数的设置功能。测试过程中,发现插入到数据库的中文出现乱码,我不断地修改,不停地运行,前前后后起码几十次,我把这些过程的相关数据都记录下来了,以待整理。这次我要弄出个所以然来。以前也遇到过数据库乱码相关的问题,但问题解决后,也不问个为什么,就这样不了了之了,久之,当再次发现后又忘记怎么解决了,于是又花好些时间到网上去搜寻答案,始终没有走出这个怪圈。趁着这次难得的机会,要将数据库中文乱码一网打尽!


插入数据库的中文产生乱码的原因,可能有以下三个因素的影响:


1、数据表字符集的设置"CHARSET=字符编码"
2、PHP文件的编码"<meta http-equiv="Content-Type" content="text/html; charset=字符编码" />"
3、存数据前是否执行mysql_query("set names 字符编码")语句。

数据表字符集的设置


下面是我要用来测试的sql数据

"CREATE TABLE `wb_node` ( 
  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT, 
  `name` varchar(20) NOT NULL, 
  `title` varchar(50) NOT NULL, 
  `ord` tinyint(3) NOT NULL DEFAULT '0', 
  `status` tinyint(1) NOT NULL DEFAULT '0', 
  `remark` varchar(150) NOT NULL, 
  `sort` smallint(6) unsigned NOT NULL, 
  `pid` smallint(6) unsigned NOT NULL, 
  `level` tinyint(1) unsigned NOT NULL, 
  PRIMARY KEY (`id`), 
  KEY `level` (`level`), 
  KEY `pid` (`pid`), 
  KEY `status` (`status`), 
  KEY `name` (`name`) 
) ENGINE=MyISAM CHARSET=utf8;"

上面数据表的表字符集为"CHARSET=utf8",当然支持中文的还可以是"CHARSET=gbk"或者"CHARSET=gb2312"
PHP文件的编码
php文件编码我是用Adobe Dreamweaver CS5生成的,如图所示:


执行sql编码语句

$link = mysql_connect($mysql_host, $mysql_user, $mysql_pass)) {  
        echo "数据库连接失败! 请返回上一页检查连接参数 "; 
    } else { 
       if(mysql_query("CREATE DATABASE `$mysql_dbname`")){ 
           mysql_query("set names utf8");       
    }else{ 
    exit("创建数据库失败"); 
    }; 
    if(!mysql_select_db($mysql_dbname)){ 
    exit("找不到数据库:".$mysql_dbname."); 
    };

mysql_query("set names 字符编码"),支持中文字符编码可以是utf8、gbk和gb2312。
以下是要插入到数据表`wb_node`的数据。

"INSERT INTO ` wb_node` VALUES ('1', 'admin', '后台项目', '0', '1', '后台项目', '1', '0', '1');"; 
 "INSERT INTO ` wb_node` VALUES ('2', 'news', '文章管理', '0', '1', '文章管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('3', 'index', '首页管理', '0', '1', '首页模块', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('4', 'picture', '图片管理', '0', '1', '图片管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('5', 'download', '下载管理', '0', '1', '下载管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('6', 'page', '单页管理', '0', '1', '单页管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('7', 'columns', '栏目管理', '0', '1', '栏目管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('8', 'databakup', '数据备份', '0', '1', '数据备份', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('9', 'role', '角色管理', '0', '1', '角色管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('10', 'config', '配置管理', '0', '1', '配置管理', '1', '1', '3');"; 
 "INSERT INTO ` wb_node` VALUES ('11', 'blog', '博客管理', '0', '1', '博客管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('12', 'user', '用户管理', '0', '1', '用户管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('13', 'guestbook', '留言管理', '0', '1', '留言管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('14', 'link', '友情链接管理', '0', '1', '友情链接管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('15', 'comment', '评论管理', '0', '1', '评论管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('16', 'upload', '附件管理', '0', '1', '附件管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('17', 'announce', '公告管理', '0', '1', '公告管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('18', 'banner', '广告管理', '0', '1', '广告管理', '1', '1', '2');"; 
 "INSERT INTO ` wb_node` VALUES ('19', 'index', '友情列表', '1', '1', '友情列表', '1', '14', '3');";

好了,测试的准备工作已经做好了。待继...


猜你喜欢
将数据库中文乱码解决方法进行到底(2)
标签 : 乱码解决 mysql
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/34.html,谢谢。
  • 评论
  • 赞助本站