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