$conn=mysql_connect('localhost','root','');
mysql_select_db('test',$conn);
mysql_query('SET NAME GBK');//这里编码设置为GBK
$rs=mysql_query('select * from user');
do{
echo 'id '.iconv('gbk', 'utf-8',$rst[0]).' //这下面为啥又用utf-8
姓名 '.iconv('gbk', 'utf-8',$rst[1]).'
密码 '.iconv('gbk', 'utf-8',$rst[2]).'
性别 '.iconv('gbk', 'utf-8',$rst[3]).' <br>';
}while($rst=mysql_fetch_array($rs));
mysql_select_db('test',$conn);
mysql_query('SET NAME GBK');//这里编码设置为GBK
$rs=mysql_query('select * from user');
do{
echo 'id '.iconv('gbk', 'utf-8',$rst[0]).' //这下面为啥又用utf-8
姓名 '.iconv('gbk', 'utf-8',$rst[1]).'
密码 '.iconv('gbk', 'utf-8',$rst[2]).'
性别 '.iconv('gbk', 'utf-8',$rst[3]).' <br>';
}while($rst=mysql_fetch_array($rs));
吧iconv函数去掉后,就好了,而且我发现不管怎么设置 mysql_query('SET NAME xxx');对页面都没影响这是为什么呢,这跟数据表有关吗,我的数据表时utf-8的
其实只需要
mysql_query('SET NAME utf8');
就可以了
mysql_query('SET NAMES utf8');
1.编码问题
mysql_query('SET NAME GBK') 是连接数据库 访问数据的编码格式
iconv()是将一个字符串 从某种编码 转换成另一种编码
原本作者数据库可能是gbk 页面显示是utf-8 所以才转来转去。最好页面 程序 数据库的编码都保持一致。
2.最好把页面显示和数据访问分开来处理, 你可以读取完数据存在一个数组或者其他容器里 不要把html和数据访问全部一起处理,这样程序很乱,拓展性差。
3.错误处理和程序设计。你用的是do{}while(),这个循环体,不管什么条件都会至少执行一遍。但是你结合程序设计,你查询出来的用户表,一定会有值?要没有,程序错误怎么处理?没有处理机制。