MySql乱码的终极解决方案

来源:互联网 发布:云计算工程师的收入 编辑:程序博客网 时间:2024/03/28 17:14

伴随着无数次重装MySql,并且花费一整天的时间后,终于使得MySql不再乱码。

问题描述:

我的Mysql安装时候,选择的编码为“Best”,即支持UTF-8的编码。在MySql中运行Status,也显示所有的编码为utf8。

问题在于:

1.如果在数据库中,使用Command line直接插入中文数据,报错,提示“data too long for columnxxx”。 根本无法插入。

 2.如果使用phpmyadmin(已设为utf-8编码登陆)插入数据,在phpmyAdmin中查看是正常的中文,在网页(程序)中显示为不正常。

3.如果在网页(程序)里面运行插入语句,则在网页(程序)中可以正常查看,可是在phpMyAdmin中看到的为乱码。

尝试的方法:

 0.使用不同的编码来浏览网页。

1.改变网页文件编码。

 2.改变head区的设置。

3.重新设置mySql的编码。

 4.更换数据库。  

5.重装数据库

结果都不行。

可是在xoops系统中网页插入的数据,使用phpmyadmin也可以正常浏览。而且是同一个数据库同一个表,我自己写程式插入中文就乱码。

最后查阅了xoops的 mysqlDatabase类,发现它执行每一句查询之前,都要先运行2句:

 mysql_query("SET CHARACTER SET utf8 ;")  or die(mysql_error());

mysql_query("SET NAMES 'utf8'") or die(mysql_error());

 这样操作下来,就可以使得我的程序和phpmyadmin看到的结果是一样的了。  

 虽然这个问题解决了,不过因为对mysql数据库还不是很了解,依然存在疑问:

1。这两句执行后的有效范围是多大?是不是只对未来的一个查询语句有效?

mysql_query("SET CHARACTER SET utf8 ;")  or die(mysql_error()); mysql_query("SET NAMES 'utf8'") or die(mysql_error());

2。为什么Mysql的Status显示为utf8,还是要手工再设置一次呢?难道是告诉mysql,我的客户端需要什么编码?是否有默认值设置?

 

 

Tips:

重装MySql的时候,请一定要注意一个问题。(windows 下)

当你卸载完MySql后,它不会提示你重新启动系统;

但是你要重新启动,并且把它相关的文件夹都删除了再重装,才可以保证正确。

原创粉丝点击