直接贴代码:
/* 
创建ADO连接 
*/ 
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild."); 
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("test1.mdb"); 
$conn->Open($connstr); /* 
创建记录集查询 
*/ 
$rs = @new COM("ADODB.RecordSet"); 
$rs->Open("select * from PE_Article",$conn,1,3); 
/* 
循环读取数据 
*/ 
$i=0;
$n=9;
while(!$rs->eof){ 
$a[$i] = iconv("gb2312","utf-8",$rs->Fields["Title"]->Value);
$b[$i] = $rs->Fields["ArticleID"]->Value;
$q[$i] = $rs->Fields["ChannelID"]->Value;
$d[$i] = strtotime($rs->Fields["UpdateTime"]->Value);
$e[$i] = $rs->Fields["Hits"]->Value;
$f[$i] = iconv("gb2312","utf-8",$rs->Fields["Author"]->Value);
$g[$i] = iconv("gb2312","utf-8",$rs->Fields["CopyFrom"]->Value);
$h[$i] = $rs->Fields["DefaultPicUrl"]->Value;
$k[$i] = strtotime($rs->Fields["CreateTime"]->Value);
$l[$i] = iconv("gb2312","utf-8",str_replace('|',',',$rs->Fields["Keyword"]->Value));
$m[$i] = iconv("gb2312","utf-8",$rs->Fields["Intro"]->Value);
$i++;
echo $c[$i];
$rs->Movenext(); //将记录集指针下移 

$rs->close(); $conn = mysql_connect("localhost","root","123456") or die("无法连接数据库");
      mysql_select_db("dedecmsv56gbk" ,$conn) or die ("未找到数据源");$c = sizeof($a);
for($j=0;$j<$c;$j++){   $sql = "insert into dede_archives(id,typeid,typeid2,sortrank,ismake,channel,arcrank,click,money,title,writer,source,litpic,pubdate,senddate,mid,keywords,lastpost,scores,goodpost,badpost,notpost,description,dutyadmin,tackid,mtype,weight) values ";
  $sql =$sql ."('$b[$j]','$q[$j]','0','$d[$j]','1','1','0','$e[$j]','0','$a[$j]','$f[$j]','$g[$j]','$h[$j]','$d[$j]','$k[$j]','8','$l[$j]','0','0','0','0','0','$m[$j]','1','0','0','$n')";
  mysql_query($sql); 
  echo "成功录入数据".$a[$j];
  echo "<br/>";
  echo "成功录入数据".$b[$j];
  echo "<br/>";
  echo "成功录入数据".$q[$j];
  echo "<br/>";
  echo $sql;
  echo "<br/>";
  $n++;
}
mysql_close();不管把从access读出来的内容转换成什么格式,存入mysql的内容都是乱码,怎么回事呢?

解决方案 »

  1.   

    插入数据前先 mysql_query("set names utf8");
    还有你的数据库是什么编码
      

  2.   

    iconv("gb2312","utf-8",$rs->Fields["Title"]->Value);
    你将Access的数据转成了utf-8格式输出,那么你的MySQL数据的编码要保证是utf8
    用mysql_query("set names utf8")来实现。还有,你确定原来的Access是gb2312编码吗?
      

  3.   

    我们使用的中文 Access 只有两种编码方式
    unicode 和 gbk(gb2312)通过字段的类型来区别
    char、varchar 的是 gbk 编码的
    charn、varcharn 的是 unicode 编码的对于你的情况,应该是后者
    iconv("gb2312","utf-8",$rs->Fields["Title"]->Value)
    应该为
    iconv("ucs-2","utf-8",$rs->Fields["Title"]->Value)