【发布时间】:2012-07-01 14:19:57
【问题描述】:
我有一个 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。
【问题讨论】:
-
也许是一个愚蠢的评论,但是在将其传递给 php 之前,您是否在 Objective-c 中对其进行了 utf8 编码?
-
我正在使用 ASIHTTPRequest,我已将其设置为对任何 POST 字符串进行编码,并将其提供给 UTF-8。或者我明白了。
标签: php mysql objective-c utf-8