将 UTF-8 编码字符串插入 UTF-8 编码表会给出不正确的字符串值。
PDOException:SQLSTATE [HY000]:一般错误:1366 不正确的字符串值:'\xF0\x9D\x84\x8E i...' 列 'body_value' 在第 1 行:INSERT INTO
我有一个字符,在mb_detect_encoding声称是 UTF-8 编码的字符串中。我尝试将此字符串插入到 MySQL 表中,该表定义为(除其他外)
DEFAULT CHARSET=utf8
编辑: Drupal 总是SET NAMES utf8
使用可选的COLLATE
(至少在与 MySQL 交谈时)。
编辑 2:一些似乎相关的更多细节。我从 PostgreSQL 数据库中获取一些文本。我将它粘贴到一个对象上,使用 mb_detect_encoding 来验证它是 UTF-8,然后使用node_save将对象保存到数据库中。因此,虽然有触发导入的 HTTP 请求,但数据并非来自浏览器。
编辑 3:数据在两个表上非规范化:
从信息架构中选择字符集名称。
COLUMNS
C WHERE table_schema = "[database]" AND table_name IN ("field_data_body", "field_revision_body") AND column_name = "body_value";
>+--------------------+
| character_set_name |
+--------------------+
| utf8 |
| utf8 |
+--------------------+
编辑4:这个角色有可能是“新人”吗?我对unicode 和 UTF-8 之间的关系有点模糊,但是这篇维基百科文章暗示该字符是最近才标准化的。
我不明白“字符串值不正确”怎么会失败。