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 展开
==============================
<?
//得到参数
$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 展开
3个回答
展开全部
写入数据库的时候加上这个代码:mysql_query("set names gb2312");放到查询、插入、修改语句前面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<head> <meta http-equiv="content-Type" content="text/html; charset=utf-8"> </head>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询