谁能解决Mysql乱码?

@Ta 2012-07-05 1570点击
如题,我用过

mysql_query("SET CHARACTER SET UTF8");
mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

都没用,空间数据库都是18idc的,我看了风云的源码,它就用了句mysql_query("SET Names UTF8");。可我用了还是没能解决乱码
回复列表(11|隐藏机器人聊天)
  • @Ta / 2012-07-05 / /
    数据库好像不仅是utf8就可以, 我从phpmyadmin看到utf-8还下分很多种,utf-8-general-ci
  • @Ta / 2012-07-05 / /
    @水木易安 是的,我被他们搞晕了
  • @Ta / 2012-07-05 / /
    @老虎会游泳 靠你了,老虎
  • @Ta / 2012-07-05 / /
    我的是这样的
    mysql_query("SET NAMES 'utf8'");
  • @Ta / 2012-07-05 / /
    @白夜 这个网名好像在小说里看过,^ω^
  • @Ta / 2012-07-05 / /
    @趣航科技小智 我在墙上看见的
  • @Ta / 2012-07-05 / /
    @白夜 在set name utf8之后,只有你新插入的数据才不会乱码。你之前通过php插入的已经乱码了的是不会自动变好的。
  • @Ta / 2012-07-05 / /
    我知道了。你需要在建表语句中指定编码,否则肯定会乱码。例:
    CREATE TABLE `test` ( `testname` varchar(255) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
  • @Ta / 2012-07-05 / /
    某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。
  • @Ta / 2012-07-05 / /
    某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。你必须指定编码。
  • @Ta / 2012-07-05 / /
        建表语句中指定编码后,你php还是必须使用set names utf8。
        mysql表的“存储编码”和php设置的“客户端编码”可以不同,mysql会自动转码。
        你甚至可以建一个DEFAULT CHARSET=gbk的表,然后使用set name utf8,你会发现在utf-8下不会乱码。你也可以set names gbk并查询以utf8编码存储的表,依然不会乱码,所有结果都被自动转成gbk。
        如果管理员没有修改配置,默认的客户端编码和表存储编码都是西方文字,这是没有设置会乱码的原因。
添加新回复
回复需要登录