悲しいことに、iOS5がついにリリースされた後、ユーザーからログインできないという報告を受けました。
そこの名前に絵文字の記号があり、アップルが絵文字のエンコーディングを変更したためです。
ユーザー名に古いバージョンの絵文字が含まれているのですが、どうすればそれらを新しいエンコーディングに変換できますか?
ありがとう!
具体的には、1つの絵文字記号「tiger」です。iOS5では「\ U0001f42f」ですが、以前のiOSバージョンでは「\ue050」です。
私は何時間も掘った後、同じ問題を抱えていました、そして最終的に私のために働くこの答えを見つけました
サーバーとしてレールを使用している場合は、これで十分です。ios / xcodeで何もする必要はありません。サーバーに、UTF8/16エンコーディングを実行せずにNSStringを渡すだけです。
Postegreはコードを正しく保存します。json:@messageをレンダリングすると仮定すると、json応答をiOSクライアントに送り返すときに、jsonエンコーディングに問題が発生します。
コンソールで簡単なテストを行うことで、Railsコンソールでjsonエンコーディングの問題が発生しているかどうかをテストできますtest = {"smiley" => "u {1f604}"} test.to_json
「{\"smiley\":\ "\ uf604 \"}」が出力される場合(1が失われていることに注意してください)、この問題が発生しています。リンクからのパッチはそれを修正します。
iOS5およびOSX10.7(Lion)は、絵文字にUnicode6.0標準の「統合」コードポイントを使用します。
SoftBankiPhone上のiOS4は、Unicode私用領域で非公式のコードポイントのセットを使用していたため、他のシステムと互換性がありません。この形式から適切なUnicode6.0文字に変換するには、送信時に現在のすべてのデータとすべての新しいフォームデータに対してSoftbankコードからUnifiedへの大きなルックアップテーブルを実行する必要があります。この時点でUnicode正規化を実行することもできます。たとえば、全幅文字は通常のASCII文字と一致します。
たとえば、PHPの絵文字変換タスクを実行するライブラリのこの表を参照してください。
ユーザー名の絵文字は?