php - 避免mysql一般错误: 1366 Incorrect string value

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

将值插入数据库时​​出现 mysql 错误:

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

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

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

  • 数据库:latin1_general_ci
  • 表:utf8_unicode_ci
  • 列:utf8_unicode_ci

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

我真正想要的是一种安全的方法来处理这个问题,以便将数据导入MySQL,以防万一一切都是UTF8 OK并且万一它有一些编码问题......我怎样才能制作“防弹”如何在 PHP 中读取这些数据并插入到 mysql 中?

最佳答案

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

关于php - 避免mysql一般错误: 1366 Incorrect string value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798081/

相关文章:

MySQL 游标 : looping through multiple rows? 出现 42000 错误, "more than one row"- 但期望有多行?

php - 是否有任何在线工具或可以简化此 MySQL SELECT 查询的人?

php - 主要站点如何检测时区?

sql - 从 Doctrine 2 和 Zend Framework 中的关联中提取数据

php - 显示 mysql 列中的所有单元格

php - 使用 php $this->beginBody() 和 endBody() 时视口(viewport)被忽略

mysql - 如何防止使用 cakephp 从表中选择

php - 获取通过zend php _forward传递的参数

PHP ORA-01745 : invalid host/bind variable name Warning

php - mySQL:为双选择查询分配自动递增ID号