Php PDO Access数据库-插入行时使用非法字符

Php PDO Access数据库-插入行时使用非法字符,php,mysql,ms-access,pdo,Php,Mysql,Ms Access,Pdo,我在将MySQL数据(文本类型的列,长度约4000个字符)写入MS Access(MEMO类型的列)时遇到问题。我使用PDO连接到mdb Access数据库: function i($name) { return iconv("utf-8","windows-1250",$name); } try{ $db = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=mydb.mdb;Uid=");

我在将MySQL数据(文本类型的列,长度约4000个字符)写入MS Access(MEMO类型的列)时遇到问题。我使用PDO连接到mdb Access数据库:

function i($name) {
return iconv("utf-8","windows-1250",$name);
}

  try{
    $db = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=mydb.mdb;Uid=");
              $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  }
catch(PDOException $e){
    echo $e->getMessage();
  }

//....fetching mysql data ....

//updating 
$upd_query = $db->prepare("update SKz set Name = :Name, Desc2 = :Desc2 WHERE ID = :ID");
$upd_query->execute(array(          
            ':Name'=>i($r['name']),
            ':Desc2'=>i($r['desc2']),
                            ':ID'=>(int)$r['id']
              ) 
        );
操作看起来正常,没有错误,但在我从Access读取记录后,在插入的字符串(列Desc2)的末尾有随机非法字符,例如Řl 9 h“� h“� €�ô

我尝试了一些方法,比如用iconv清理文本,preg_replace,不起作用。MySql编码UTF8,Access有Windows-1250

如何清理非法字符并防止插入?有什么想法吗


(在XAMPP pack上进行测试,Windows server 2003 64位)

我希望您以前找到了问题的答案,但以下是有关特殊字符问题的线索:

简单但不完整的修复 Access返回的文本实际上与该字符集中字符的Windows-1252字符编码相匹配,因此只需更改行即可

$s=$row[“Team”];

$s=utf8\u编码($row[“Team”]);