日期:2014-05-17  浏览次数:20536 次

界面显示出现乱码
 
我的查询语句是:
mysql_query("SET NAMES UTF8");
//如果数组的元素个数为1个,则按单个条件进行查询
if(count($newstr)==1){
$sql = "select * from commodity where commodity_name like '%".$newstr[0]."%' or Sale_Address like '%".$newstr[0]."%'order by id desc ";
}
else{
//合并查询结果集
for($i=0;$i<count($newstr);$i++){
$sql0.=" commodity_name like '%".trim($newstr[$i])."%'"." or";
}
for($j=0;$j<count($newstr);$j++){
$sql1.=" Sale_Address like '%".trim($newstr[$j])."%'"." or";
}
$sql1=substr($sql1,0,-3); //去掉最后一个“or”
$sql="select * from commodity where".$sql0.$sql1." order by id desc";
}
require_once("common/db_mysql.class.php");
$DB= new DB_MySQL;
//得到总记录数
   
$DB->query($sql);
$row_count_sum = $DB->get_rows();//返回结果集中记录的行数
//每页记录数,可以使用默认值或者直接指定值
$row_per_page = 6;
//总页数
$page_count = ceil($row_count_sum/$row_per_page);
//判断是否为第一页或者最后一页
$is_first = (1 == $page_num) ? 1 : 0;
$is_last = ($page_num == $page_count) ? 1 : 0;
//查询起始行位置
$start_row = ($page_num-1) * $row_per_page;
//为SQL语句添加limit子句
$sql .= " limit $start_row,$row_per_page";
//执行查询
$DB->query($sql);
$res = $DB->get_rows_array();//返回结果集记录组成的数组 
//结果集行数
$rows_count=count($res);

for($i=0;$i<$rows_count;$i++){
$id=$res[$i]['id']; //ID号
$title=$res[$i]['commodity_name']; //标题
$content = $res[$i]['Sale_Address']; //内容
echo $id.$title."**".$content."&&";
}


当我运行正常时结果是:62凤飞飞**多大&&61ssssss**ssss&&60哈哈哈**反反复复&&59嗯嗯嗯**嗯嗯嗯&&
但是偶尔会出现异常结果:62???**??&&61ssssss**ssss&&60???**????&&59???**???&&
我尝试着改浏览器的兼容性,有时候能恢复正常,有时候怎么改都没用,请问这是什么情况?在代码中能处理这种情况么
(以上代码有两个自定义函数,如果大家觉得有必要我再贴出来) 谢谢大家帮忙

------解决方案--------------------
PHP code

#PHP页面开头加上
header("content-type:text/html;charset:utf-8");

------解决方案--------------------
数据库是什么编码? php文件又是什么编码? 统一后一般都没有问题.
------解决方案--------------------
还有一个可能,你的编辑器有问题!你是不是从原来gb2312改成utf-8的

------解决方案--------------------
我有遇到过的,导出来,导进去(另外的框架),全是??????之类的,如果是自己重新添加,那么就全是正常的