您的位置:首页 > 数据库 > MySQL

MySql乱码的终极解决方案

2008-05-22 16:47 267 查看
伴随着无数次重装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后,它不会提示你重新启动系统;

但是你要重新启动,并且把它相关的文件夹都删除了再重装,才可以保证正确。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: