避免mysql一般错误:1366字符串值不正确

时间:2014-09-11 22:39:45

标签: php mysql zend-framework utf-8 character-encoding

在我的数据库中插入一个值时,我收到了mysql错误:

General error: 1366 Incorrect string value: '\xE4ngen....' for ....

我正在使用带有PDO的zend框架1.10,而我尝试插入的数据是从UTF8中的XML文件中解析出来的。 Mysql是5.6.14。

我还检查了我的mysql数据库,表和列排序规则,它们是:

  • 数据库:latin1_general_ci
  • table:utf8_unicode_ci
  • 专栏:utf8_unicode_ci

由于我的输入来自XML文件,我运行了iconv来检查文件是否有效utf8:iconv -f UTF-8文件-o / dev / null,一切看起来都不错,但我真的不相信这个XML,因为它来自我无法控制的外部源。

我真正想要的是一种安全的方法来处理这个问题,以便在一切都是UTF8的情况下将数据导入MySQL,以防它有一些编码问题...我怎样才能制作一个" bullet -proof"在PHP中读取这些数据并插入mysql的方法?

1 个答案:

答案 0 :(得分:0)

如果您不能信任任何特定字符编码的输入,那么您几乎不得不将其视为任意二进制数据。将列转换为BLOBVARBINARYBINARY数据类型。