【问题标题】:Encoding issue when inserting .mdb data into SQL将 .mdb 数据插入 SQL 时的编码问题
【发布时间】:2014-11-11 16:19:07
【问题描述】:

我正在尝试将 .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 DB,它包含在 UTF-8 中无效的 Microsoft Office 特殊字符。所以我用下面的函数解析了每个字符串。

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

【问题讨论】:

  • 点击,点击,点击....水晶球启发我.....。水晶球说我们需要查看您的代码才能帮助您。其他任何事情都是纯粹的猜测。
  • 有点难,我使用的是Bolt,它运行在Symfony之上。所以它有很多代码。
  • 德拉特。这将很难弄清楚。查看页面输出的来源,看看它是否在那里编码并被浏览器解释。
  • 也试过了,但它看起来像纯文本。
  • 明白了! Microsoft 编码字符。这就是问题所在。

标签: php mysql ms-access pdo


【解决方案1】:

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

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

查看实际解决方案

【讨论】:

  • 我在 Symfony 框架中使用 PDO,所以它会为我转义字符串。
  • 接受,因为它触发了我的大脑寻找 MS 特定字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
相关资源
最近更新 更多