この記事によると、iOS4 から iOS6 までの絵文字をサポートする正しい方法は、utf8mb4 エンコーディングを使用することです。App Engine のデータストアは utf8mb4 をサポートしていますか? 現在、iOS アプリのバックエンドとして App Engine の Java バージョンを使用しています。
1 に答える
まず、リンク先の記事で、データベースとしてiOS用のアプリを開発したライターの経験について説明しmysql
ています。mysqlでは、エンコーディング「utf8」は1、2、または3バイトの長さの文字のみを表します。
ただし、utf8は、定義上、1、2、3、または4バイト長の文字をサポートします。したがって、mysqlのエンコーディングと照合のコンテキストでは、utf8は3バイトまでの文字のみを意味します。4バイト長の文字の場合、mysqlはutf8mb4エンコーディングを考案しました。
ただし、これはmysqlコンテキストにのみ適用されます。mysqlの世界以外では、utf8は自動的に1、2、3、または4バイト文字のサポートを意味します。UTF-8ウィキペディアのページを参照してください。これについては、導入段落で説明しています。
UTF-8は、1〜4個の8ビットバイト(Unicode標準では「オクテット」と呼ばれます)を使用して、Unicode文字セットの1,112,064[7]コードポイントのそれぞれをエンコードします。
したがって、プラットフォームまたはソフトウェアアプリケーションがUTF-8をサポートすると主張する場合、1文字あたり1、2、3、または4バイトを消費する可能性のあるすべての1,112,064コードポイントをサポートすることを意味します。
mysqlのケースは、utf8エンコーディングが実際には100%utf8ではなく、utf-8のわずか6%であるという異常です(ただし、ほとんどの人は、絵文字や他の文字を使い始めない限り、それに気付かないでしょう)。
したがって、私の提案は、Google App Engineがサポートする有効なエンコーディングとしてutf-8を受け入れる場合、4バイトの文字をサポートすると想定しても安全だということです。