在我的数据库中插入一个值时,我收到了mysql错误:
General error: 1366 Incorrect string value: '\xE4ngen....' for ....
我正在使用带有PDO的zend框架1.10,而我尝试插入的数据是从UTF8中的XML文件中解析出来的。 Mysql是5.6.14。
我还检查了我的mysql数据库,表和列排序规则,它们是:
由于我的输入来自XML文件,我运行了iconv来检查文件是否有效utf8:iconv -f UTF-8文件-o / dev / null,一切看起来都不错,但我真的不相信这个XML,因为它来自我无法控制的外部源。
我真正想要的是一种安全的方法来处理这个问题,以便在一切都是UTF8的情况下将数据导入MySQL,以防它有一些编码问题...我怎样才能制作一个" bullet -proof"在PHP中读取这些数据并插入mysql的方法?
答案 0 :(得分:0)
如果您不能信任任何特定字符编码的输入,那么您几乎不得不将其视为任意二进制数据。将列转换为BLOB
,VARBINARY
或BINARY
数据类型。