2

とりわけ、データを PHP サーバーに送信する iOS アプリを構築しています。

jeremyö次の送信元の文字列のように、アクセント付きの文字に問題があります。

  • iOS (ASIHTTPRequest を使用) は、PHP var_dump によって次のように検出されます。string(7) "jeremyö"
  • Firefox または Chrome からのstring(8) "jeremyö"

ログインとして使用すると、これによりすべてのものが壊れます。

この動作を回避する方法について何かヒントはありますか?

PHP 部分は UTF-8 のみ (Drupal 7 バックエンド) で、iOS で使用されているエンコーディングはわかりませんが、UTF-8 か、おそらく UTF-16 だと思います。

ありがとう、ジェレミー

4

1 に答える 1

1

これは、エンコードよりもユニコードの正規化のように聞こえます。Unicode では、ö のような文字は 2 つの方法で表すことができます。U+00F6(分音記号付きの小さな o) または 2 文字 (通常の o と分音記号の組み合わせ (U+0308)) にすることができます。

precomposedStringWithCanonicalMappingiOS には、decomposedStringWithCanonicalMappingこれらのさまざまな表現間で文字列を変換できるNSString などのメソッドがあります。おそらく php にも同様のメソッドがあります。

これらの文字列をデータベースへのクエリ パラメータとして使用している場合、データベースには文字列の等価性を制御する設定がある可能性があります (mysql の場合は照合プロパティ)。

于 2012-01-04T20:31:01.567 に答える