我正在构建一个iOS应用程序,它将数据发送到PHP服务器。
我对字符串jeremyö
中的重音字符有问题,当从发送时
- PHP var_dump检测到iOS(使用ASIHTTPRequest)为
string(7) "jeremyö"
- PHP var_dump检测到来自Firefox或Chrome的
string(8) "jeremyö"
当用作登录时,这会破坏我所有的东西。
你对我如何处理这种行为有什么建议吗?
PHP部分仅为UTF-8(Drupal7后端),我不知道iOS上使用的编码,但我猜它是UTF-8或UTF-16。
谢谢,Jérémy
这听起来更像是unicode规范化,而不是编码。在unicode中,像ö这样的字符可以用两种方式表示。它可以是U+00F6
(带分音符的小o),也可以是两个字符:普通o和组合分音符(U+0308)。
在iOS上,有一些方法,如NSString的precomposedStringWithCanonicalMapping
、decomposedStringWithCanonicalMapping
等,允许您在这些不同的表示之间转换字符串,php中可能也有类似的方法。
如果您使用这些字符串作为数据库的查询参数,那么您的数据库可能具有控制字符串相等性的设置(对于mysql,这是排序规则属性)