已掉线,重新登录

首页 > 绿虎论坛 > 杂类 > 超级灌水 (发帖)

标题: 谁能解决Mysql乱码?

作者: @Ta

时间: 2012-07-05

点击: 1567

如题,我用过

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

都没用,空间数据库都是18idc的,我看了风云的源码,它就用了句mysql_query("SET Names UTF8");。可我用了还是没能解决乱码

[隐藏样式|查看源码]


『回复列表(11|隐藏机器人聊天)』

1. 数据库好像不仅是utf8就可以, 我从phpmyadmin看到utf-8还下分很多种,utf-8-general-ci
(/@Ta/2012-07-05 14:49//)

2. @水木易安 是的,我被他们搞晕了
(/@Ta/2012-07-05 14:52//)

3. @老虎会游泳 靠你了,老虎
(/@Ta/2012-07-05 15:42//)

4. 我的是这样的
mysql_query("SET NAMES 'utf8'");
(/@Ta/2012-07-05 17:29//)

5. @白夜 这个网名好像在小说里看过,^ω^
(/@Ta/2012-07-05 18:01//)

6. @趣航科技小智 我在墙上看见的
(/@Ta/2012-07-05 18:09//)

7. @白夜 在set name utf8之后,只有你新插入的数据才不会乱码。你之前通过php插入的已经乱码了的是不会自动变好的。
(/@Ta/2012-07-05 18:26//)

8. 我知道了。你需要在建表语句中指定编码,否则肯定会乱码。例:
CREATE TABLE `test` ( `testname` varchar(255) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
(/@Ta/2012-07-05 19:11//)

9. 某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。
(/@Ta/2012-07-05 19:12//)

10. 某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。你必须指定编码。
(/@Ta/2012-07-05 19:12//)

11.     建表语句中指定编码后,你php还是必须使用set names utf8。
    mysql表的“存储编码”和php设置的“客户端编码”可以不同,mysql会自动转码。
    你甚至可以建一个DEFAULT CHARSET=gbk的表,然后使用set name utf8,你会发现在utf-8下不会乱码。你也可以set names gbk并查询以utf8编码存储的表,依然不会乱码,所有结果都被自动转成gbk。
    如果管理员没有修改配置,默认的客户端编码和表存储编码都是西方文字,这是没有设置会乱码的原因。
(/@Ta/2012-07-05 19:26//)

回复需要登录

9月28日 22:02 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1