2

我正在构建一个 iOS 应用程序,其中包括将数据发送到 PHP 服务器。

我有重音字符的问题,例如从以下位置jeremyö发送的字符串中的重音字符:

  • iOS(使用 ASIHTTPRequest)被 PHP var_dump 检测为string(7) "jeremyö"
  • 来自 Firefox 或 Chrome 的 PHP var_dump 检测为string(8) "jeremyö"

当用作登录时,这会破坏我的所有东西。

您对我如何解决此问题有任何提示吗?

PHP 部分仅是 UTF-8(Drupal 7 后端),我不知道 iOS 上使用的编码,但我猜它是 UTF-8 或者可能是 UTF-16。

谢谢,杰里米

4

1 回答 1

1

这听起来更像是 unicode 规范化然后是编码。在 unicode 中,像 ö 这样的字符可以用两种方式表示。它可以是U+00F6(带分音符号的小 o),也可以是两个字符:一个普通的 o 和一个组合分音符号 (U+0308)。

在 iOS 上,有诸如 NSString's 之类的方法precomposedStringWithCanonicalMapping允许decomposedStringWithCanonicalMapping您在这些不同的表示之间转换字符串,在 php.ini 中可能有类似的方法。

如果您将这些字符串用作数据库的查询参数,那么您的数据库可能具有控制字符串相等含义的设置(对于 mysql,它是排序规则属性)

于 2012-01-04T20:31:01.567 回答