我有一个 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。