php输出mysql中文乱码问题?
【很简单的程序,就是统计手机信息,然后用表格显示到网页上】本机服务器是php5.3,mysql数据库和表的字符集都是是utf-8,校对集是utf-8_general,代码...
【很简单的程序,就是统计手机信息,然后用表格显示到网页上】本机服务器是php5.3,mysql数据库和表的字符集都是是utf-8,校对集是utf-8_general,代码里面也设置了编码为utf-8,但是网页显示中文乱码,奇怪的是title标题的中文正常,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>智能手机登记表</title>
</head>
<?php
header("Content-type:text/html;charset=utf8");
require_once('connvars.php');
//连接数据库
$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME) or die('无法连接到数据库,请检查$dbc的参数是否正确!');
$query="select tmi.unit, tmi.rank, tmi.name, tci.model, tci.IMEI, tci.TEL,tci.status ".
"from tb_cellphone_info AS tci ".
"INNER JOIN tb_master_info AS tmi ON(tci.master_id=tmi.id) ".
"where tci.master_id=tmi.id";
$data=mysqli_query($dbc,$query);
if (!$data) {
printf("Error: %s\n", mysqli_error($dbc));
exit();
}
echo '<div>';
echo '<ul>';
//循环输出
while($row=mysqli_fetch_array($data)){
echo '<li>'.$row['unit'].'</li>';
echo '<li>'.$row['name'].'</li>';
echo '<li>'.$row['rank'].'</li>';
echo '<li>'.$row['model'].'</li>';
echo '<li>'.$row['IMEI'].'</li>';
echo '<li>'.$row['status'].'</li>';
}
echo '</ul>';
echo '</div>';
mysqli_close($dbc);
?>
<body>
</body>
</html>
!!!!!!!!!!按照网上加mysql_query("set names 'utf-8'");没用,而且报错。浏览器编码也是utf-8。
求高手解答! 展开
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>智能手机登记表</title>
</head>
<?php
header("Content-type:text/html;charset=utf8");
require_once('connvars.php');
//连接数据库
$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME) or die('无法连接到数据库,请检查$dbc的参数是否正确!');
$query="select tmi.unit, tmi.rank, tmi.name, tci.model, tci.IMEI, tci.TEL,tci.status ".
"from tb_cellphone_info AS tci ".
"INNER JOIN tb_master_info AS tmi ON(tci.master_id=tmi.id) ".
"where tci.master_id=tmi.id";
$data=mysqli_query($dbc,$query);
if (!$data) {
printf("Error: %s\n", mysqli_error($dbc));
exit();
}
echo '<div>';
echo '<ul>';
//循环输出
while($row=mysqli_fetch_array($data)){
echo '<li>'.$row['unit'].'</li>';
echo '<li>'.$row['name'].'</li>';
echo '<li>'.$row['rank'].'</li>';
echo '<li>'.$row['model'].'</li>';
echo '<li>'.$row['IMEI'].'</li>';
echo '<li>'.$row['status'].'</li>';
}
echo '</ul>';
echo '</div>';
mysqli_close($dbc);
?>
<body>
</body>
</html>
!!!!!!!!!!按照网上加mysql_query("set names 'utf-8'");没用,而且报错。浏览器编码也是utf-8。
求高手解答! 展开
展开全部
mysqli_query($dbc, "SET NAMES UTF8");
你用mysqli链接的数据库,所以必须用对应函数执行,而且编码设置应该紧跟你建立链接下面。
php5以后开始支持面向对象了,还用面向过程的写法,以后升级很麻烦,这个是建议
你用mysqli链接的数据库,所以必须用对应函数执行,而且编码设置应该紧跟你建立链接下面。
php5以后开始支持面向对象了,还用面向过程的写法,以后升级很麻烦,这个是建议
追问
我加了mysqli_set_charset($dbc,'utf8');解决问题了,但是mysql、php都是utf-8了,为什么还要写这个?是不是中文网页都要这句代码?
还有面向对象怎么写,求教??
追答
关于编码问题,你看下下面这篇文章
http://blog.csdn.net/zsmj_2011/article/details/7943734
面向对象怎么写,没办法说清楚,你搜 php面向对象 学习后就知道怎么写了。
提醒:php新版本中一些函数不再支持了,现在网上很多资料还是以前的写法,多关注下官方的更新内容:http://php.net/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询