用php连接access数据库,当页面编码是utf-8的时候,就会出现乱码。
下面给出解决办法
一、读取数据
使用 iconv函数制作一个转码的自定义从GBK转到UTF-8的函数,如以下代码:
//从GBK转到UTF-8,输出的时候用
function enc($c){
return iconv('gbk','utf-8',$c);
}
二、添加数据
为了写入数据库的编码是符合数据库需要的,所以我们还要制作一个从UTF-8转向GBK的函数:
//从UTF-8转向GBK,添加的时候用
function dec($c){
return iconv('utf-8','gb2312',$c);
}
制作好了转码函数,接下就是正常使用了。在从数据库里面调数据显示在页面的时候使用enc()函数,从页面提交数据到数据库时使用dec()函数,这样就可以很好的解决PHP使用UTF-8编码,ACCESS使用系统默认编码的问题了。
应用实例代码
header("content-type:text/html;charset=utf-8");
//从GBK转到UTF-8,输出的时候用
function enc($c){
return iconv('gbk','utf-8',$c);
}
/*
创建ADO连接
*/
$conn = @new COM("ADODB.Connection") or die ("ADO Connection faild.");
$connstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath("ycxfbase.mdb");
$conn->Open($connstr);
/*
创建记录集查询
*/
$rs = @new COM("ADODB.RecordSet");
$rs->Open("select * from about",$conn,1,3);
/*
循环读取数据
*/
while(!$rs->eof){
echo enc($rs->Fields["title"]->Value);
echo "
";
$rs->Movenext(); //将记录集指针下移
}
$rs->close();
?>