1. 数据库好像不仅是utf8就可以, 我从phpmyadmin看到utf-8还下分很多种,utf-8-general-ci
4. 我的是这样的
mysql_query("SET NAMES 'utf8'");
7.
@白夜 在set name utf8之后,只有你新插入的数据才不会乱码。你之前通过php插入的已经乱码了的是不会自动变好的。
8. 我知道了。你需要在建表语句中指定编码,否则肯定会乱码。例:
CREATE TABLE `test` ( `testname` varchar(255) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
9. 某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。
10. 某些Mysql创建表时默认编码是iso-某某某某,所以不能保存中文。你必须指定编码。
11. 建表语句中指定编码后,你php还是必须使用set names utf8。
mysql表的“存储编码”和php设置的“客户端编码”可以不同,mysql会自动转码。
你甚至可以建一个DEFAULT CHARSET=gbk的表,然后使用set name utf8,你会发现在utf-8下不会乱码。你也可以set names gbk并查询以utf8编码存储的表,依然不会乱码,所有结果都被自动转成gbk。
如果管理员没有修改配置,默认的客户端编码和表存储编码都是西方文字,这是没有设置会乱码的原因。