【发布时间】:2014-09-11 22:39:44
【问题描述】:
在我的数据库中插入一个值时出现 mysql 错误:
General error: 1366 Incorrect string value: '\xE4ngen....' for ....
我正在使用带有 PDO 的 zend 框架 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,因为它来自我无法控制的外部来源。
我真正想要的是一种安全的方法来处理这个问题,以便将数据导入 MySQL,以防万一一切都是 UTF8 好的,并且如果它有一些编码问题......我怎样才能做一个“防弹”如何在 PHP 中读取这些数据并插入到 mysql 中?
【问题讨论】:
-
抛出异常是一种解决方案吗?还是您需要通过各种方式修复错误的编码?
-
完全正确:我需要通过各种方式修复它。因为我不能相信来源不会犯错误,有些来源是好的,有些不是我真的必须对我的代码进行防弹,即使导入的数据出现“奇怪的字符”出现一些问题,它仍然更好与未导入数据的今天相比。
-
好吧,那我不羡慕你。检测任意编码——然后正确地转换它们——非常有趣。
标签: php mysql zend-framework utf-8 character-encoding