这两天做网站的时候,一直在为msyql的导入导出纠结!直到刚刚,我貌似才真正明白了这两天为啥会遇到那么多问题,比如乱码!
其实一看到乱码,经常搞数据库的肯定都知道是编码的问题,但是如果你了解的不透彻,想恢复乱码为数据是很不容易的,即使搞好了,相信你也只是运气好而已!
首先可以看看昨天发的文章!
“河洛渔人使用phpmyadmin导出导入数据库时候遇到的各种问题!”地址:http://blog.sina.com.cn/s/blog_4cd978f90102vm5r.html
就在昨天貌似导入成功,而且在数据库里看到都不再是乱码的时候,今天一上班,就开始设置数据库链接,用网页打开进行访问,却万万没想到,竟然在网页上又碰到了乱码!于是我先进入数据库,看到昨天导入的数据库,里面的汉字很正常,没有乱码,可是这是为什么呢?
我先修改了数据库链接那个地方,mysql_query("set names 'utf-8'"); //数据库编码,把它该做mysql_query("set names 'gb2312'"); //数据库编码,这个时候,网页访问正常!但是这样的结果,我很担心本地修改好后,传到服务器上是不是还会乱码依旧?
于是,我又想了想昨天请教机房的人给我的答案,她说“在进行导入导出前,都先将language改成chinese simplified”,因为昨天的暂时成功,让我感觉她这句话没有什么意义,直到今天,我才又好好思考了这句话!
我发现服务器上面的phpmyadmin和我本地的有所不同!不单单是版本不同,而且language那里也有不同!服务器上的language不仅仅只有chinese simplified,而且还多了个Chinese simplified-gb2312,而且默认的就是Chinese simplified-gb2312,而我本地的只有Chinese simplified,并没有Chinese simplified-gb2312。


所以虽然我和服务器上的文件的字符集:都选的是utf-8,但是因为language的不同,结果导致在本地备份后,传到服务器上后就出现数据库内汉字乱码!(当时我们的技术也没搞明白怎么回事,那个时候数据少,他就把数据全部删了,重新提交了新数据,暂时的让数据库看着正常!而隐患就在这个时候埋伏下来!)
而这几天,为了修改网站内容,为了不至于把服务器上的搞坏,就想把数据库备份到本地操作,改好后再进行上传,结果就再次出现了乱码!这个时候的解决方法就是昨天的心得!详情请看http://blog.sina.com.cn/s/blog_4cd978f90102vm5r.html
于是我将服务器上的language改成了Chinese simplified,重新备份,然后导入到本地(这次是按默认的配置,也就是文件字符集还是默认的utf-8,没有更改为gb2312),直接导入成功!就在我感到欢喜的时候,竟然发现数据库里面的汉字又出现了乱码!不过这个我也猜到了!我想这就是因为当初网站做好第一次导入导出的时候,因为language的不统一,强制删除数据库,重新输入数据造成的!(我想可以这么认为,我本地的是Chinese simplified,强制导入了服务器上的Chinese simplified-gb2312,结果服务器上本该是乱码的我们手动改成了汉字,今天我们又将本是乱码的汉字导入到本地,就是因为现在的操作是正常的,导致本地本该是汉字的变成了乱码)
在这里虽然数据库里面是乱码,但是数据库链接使用mysql_query("set names 'utf-8'"); //数据库编码网页是正常访问的!
至于是不是我想的那个问题造成的,只有下次我新建一个数据库,重新上传,进行导入导出,来验证了! |