0

我有一个 Objective-C NSString(比如,'Gabriel García Márquez'),我想通过 POST 请求传递给 PHP,然后调用 MySQL 插入将字符串添加到 utf8-bin 列。麻烦的是,字符串在此过程中会发生一些变形,我已经阅读了有关该主题的每篇 Stack Overflow 帖子以防止它发生。

POST 请求(使用字符集 UTF-8)包含“Gabriel Garc\U00eda M\U00e1rquez”。

如果我立即将该字符串插入 utf8-bin 列而不进行编码或解码,则 MySQL 中的结果为“4761627269656c2047617263c3ad614dc3a1727175657a”。如果我将字符串包装在 utf8_decode() 中,结果是“Gabriel Garc”。如果我将字符串包装在 utf8_encode() 中(嘿,为什么不呢?),结果与第一个字符串相同。

为了防止这篇文章变成垃圾,我缺少什么?

一些使这更加令人沮丧的注释:

  • 我在插入查询之前调用 mysql_set_charset('UTF8', $conn) 。
  • 该表在 utf8_bin 中整理,列是 utf8_bin。
4

1 回答 1

0

糟糕...这是一个 phpMyAdmin 错误。令人惊讶的是,“4761627269656c2047617263c3ad614dc3a1727175657a”在不同的环境中是正确的——它可以在 MySQL Workbench 中以可读的方式打印。我只花了两天时间才弄清楚...

于 2012-07-01T06:19:57.367 回答