php采集utf-8网页乱码

我用php采集utf-8网页入库成乱码。采集gb2312的正确。程序网页编码utf-8数据库编码utf-8如果采集的网页的编码是gb2312那么就不是乱码,utf-8的就... 我用php采集utf-8网页入库成乱码。采集gb2312的正确。程序网页编码utf-8数据库编码utf-8如果采集的网页的编码是gb2312那么就不是乱码,utf-8的就是乱码。
==============================
<?
//得到参数
$url1=trim($_REQUEST["url1"]);
$url2=trim($_REQUEST["url2"]);
$url3=trim($_REQUEST["url3"]);
$reg=trim($_REQUEST["reg"]);

$ip=trim($_REQUEST["ip"]);
$database=trim($_REQUEST["database"]);
$bm=trim($_REQUEST["bm"]);
$table=trim($_REQUEST["table"]);
$uid=trim($_REQUEST["uid"]);
$pwd=trim($_REQUEST["pwd"]);

$zd_reg=$_REQUEST["zd_reg"];
$zd_zhi=$_REQUEST["zd_zhi"];

if(empty($zd_reg) || empty($zd_zhi))
{
?>
<script language="javascript">
alert("获取地方没有正则或数据库没有字段");
history.back(-1);
</script>
<?php
}
else
{
//数据库连接
$conn=mysql_connect($ip,$uid,$pwd);
if(!$conn)
{
echo "数据库连接失败";
}
else
{
mysql_select_db($database,$conn);
mysql_query("SET NAMES UTF8");

//读取页面数据
$index_content = file_get_contents($url1);
preg_match_all($reg,$index_content,$title);
$count =count($title[1]);
if($count>0)
{
$d=0; //计数计算得到的数据条数
for($i=0;$i<$count;$i++)
{
//得到内页的网站数据
$aurl = $url2.$title[1][$i].$url3;
$acount = file_get_contents($aurl);

//插入到数据库中
$sql="insert into `".$table."`(";
foreach($zd_reg as $key =>$val_reg)
{
if($key!=count($zd_reg)-1)
{
$sql.=" `".$zd_zhi[$key]."`,";
}
else
{
$sql.=" `".$zd_zhi[$key]."`";
}
}
$sql.=") values(";

$null=0; //如果采集的任意字段有控制那么不插入数据库中
foreach($zd_reg as $key =>$val_reg)
{
preg_match($val_reg,$acount,$val_arr);
$val=$val_arr[1];
if($val=="")
{
$null=1;
}
else
{
iconv("UTF-8","gb2312",$val);
}

$val=addslashes($val);

if($key!=count($zd_reg)-1)
{
$sql.=" '$val',";
}
else
{
$sql.=" '$val'";
}
}
$sql.=")";
if($null!=1)
{
if(mysql_query($sql,$conn))
{
$d++;
}
}
}

?>
<script language="javascript">
alert("共采集到<?=$d?>条数据");
//history.back();
</script>
<?php

}
else
{
?>
<script language="javascript">
alert("没有采集到超级连接");
history.back();
</script>
<?php
}
}
}
?>
我数据库是utf-8的。
听说在获得网页数据时要进行编码转换,不知道怎么转换,什么时候需要转换。

$acount = mb_convert_encoding($acount,"utf-8","gb2312");
我是这样的。

==采集时网页要过时,怎么设置不过时。php
展开
 我来答
createindex
2009-11-19 · TA获得超过172个赞
知道小有建树答主
回答量:179
采纳率:100%
帮助的人:0
展开全部
脚本运行的最前面加上一句 set_time_limit(0); 设置不超时

iconv 或者mb_convert_encoding转码。获取过内容的时候就将得到的字符串转为你想要的编码。
湘味熊美食
2009-11-16 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:139万
展开全部
写入数据库的时候加上这个代码:mysql_query("set names gb2312");放到查询、插入、修改语句前面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wudipaopao
2009-11-17 · TA获得超过797个赞
知道小有建树答主
回答量:1486
采纳率:0%
帮助的人:801万
展开全部
<head> <meta http-equiv="content-Type" content="text/html; charset=utf-8"> </head>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式