将.mdb数据插入SQL时出现编码问题


Encoding issue when inserting .mdb data into SQL

我正试图将.mdb文件(来自Microsoft Access)的内容导出到MySQL数据库中。

当我从.mdb文件中获取内容并将其回显到页面时,它看起来很好,就像标准文本一样。但是,当我使用PDO将它插入数据库时,我会得到一个incorrect string value错误。INSERT子句中的字符串如下所示:

'x41'x44'x20'x2d'x20'x57'x49'x4c'x44'x20'x42'x45'x41'x4e'x20'x43'x41'x46'xc9

我不完全确定为什么会发生这种情况,也不知道我需要做些什么来纠正它。这并不是所有记录都会发生,只有一些记录会发生。

任何指示都会有所帮助。

解决方案

由于数据来自Microsoft Access数据库,其中包含在UTF-8中无效的Microsoft Office特殊字符。所以我用下面的函数解析了每个字符串。

iconv("cp1252","UTF-8", $str);

某些文本字段中可能有引号或其他特殊字符。在插入之前转义文本

mysqli_real_escape_string($text)
  // or
mysql_real_escape_string($text)

请参阅OP了解实际解决方案