3

UITextviewWeb サービスを介してサーバーにテキストを送信する iPhone アプリケーションがあります。次のページでは、Web サービスを介してサーバーからのコメントのリストを表示しています。に絵文字/顔文字を挿入する場合を除いて、すべて正常に動作していUITextviewます。

次のページには、一部の絵文字の代わりに正方形のボックスが表示されます (すべてではありません)。

私はそれに気づきました:

  1. 作業:UITextview絵文字キーボードから 1 つの絵文字文字を挿入し、そのコードをログ \u2601 に出力し、このテキストをサーバーに送信しました。次のページで、同じユニコード \u2601 を取得し、正常に動作しています。絵文字アイコンが表示されます。

  2. 動作しない: 絵文字キーボードから別の絵文字を挿入し、UITextviewそのコードをログ \ud83d\udc16 に出力して、このテキストをサーバーに送信しました。次のページで、送信したものとは異なる Unicode コードポイントを取得しました: \uf416. iPhone はこの Unicode を認識しないため、四角いボックスが表示されます。

では、ここで何が問題なのですか?絵文字に Unicode コードポイントのペアがある場合にのみ機能しません。

コメントが保存されるデータベースは MySQL バージョン 5.5 です。

サーバーから取得したときに絵文字の文字コードのペアが変わるのはなぜですか? iPhoneが認識できるように、取得したUnicodeを元の形式にデコードする方法は?

4

2 に答える 2

0

ありがとう、マー・バイヤーズ、あなたは私にヒントをくれました。Unicode プレーンとは何か、サロゲートとは何か、およびそれがどのように機能するかを読みました。私のSQLサーバーのバージョンは文字セットuyf8mb4を持つ5.5であるため、実際にはサーバーの問題ではないことがわかりました。コメント列でそのセットを使用しました。

サーバーから取得したjson応答をデコードするためにアプリで使用したSBJSONの問題。Apple は、ios5 以降の os 用のjson ライブラリNSJSONSerializationを導入しています。そのライブラリを使用してjson応答をデコードし、私のコードは魅力のように機能します..:)

私はここから解決策を得ました

http://blog.manbolo.com/2011/12/12/supporting-ios-5-new-emoji-encoding

そしてここ

http://blog.manbolo.com/2012/10/29/supporting-new-emojis-on-ios-6

@Manbolo ブログに感謝します。

于 2013-01-22T06:12:47.857 に答える
0

キャラクター U+F416 は私用エリア (PUA) の 1 つにあります。

おそらく、アプリからデータベースへの途中、およびその逆のコードによって、絵文字がこの文字に置き換えられた可能性があります。これは、サービスとの通信に使用するクライアント ライブラリ、Web サービス、データベース インターフェイス、またはデータベース自体など、この方法の任意のコンポーネントである可能性があります。このレイヤーのそれぞれに個別に取り組むか、レイヤーを通してキャラクターをたどって、それがまだ正しいかどうかを確認してください。

于 2013-01-19T09:10:13.450 に答える