web-dev-qa-db-ja.com

iOS 5:絵文字をUnicode文字に変換する方法は?

IOS 5で絵文字をUnicode文字に変換したい。

たとえば、変換 smiling face with open mouth and cold sweat \ue415

NSString Class ReferenceNSStringEncodingに行きました。

IOS 4では、NSUTF16BigEndianStringEncodingおよびNSUTF32BigEndianStringEncoding 私にくれた <e415>および<0000e415>、それぞれ、私が望むものに非常に近いです。

IOS 5では、結果は異なります。 <d83dde04>および<0001f604>

どうすれば入手することができますか \ue415 にとって smiling face with open mouth and cold sweat iOS 5で?ありがとうございました。

27
Protocole

\ue415は絵文字のレガシーエンコーディングの一部であり、特定の日本の通信事業者に固有です。ソフトバンク、NTT、およびドコモには、すべて独自のプライベート絵文字セットがありました。

iOS 5は、絵文字文字プレーンと<0001f604>isはその文字のUnicodeコードポイントです。これに関するウィキペディアのエントリは、EmojiSources.txtマッピングファイルを参照します。これは、古い私用文字コードを本当に取得する必要がある場合に自分でマッピングを行うために使用する必要があります。

http://en.wikipedia.org/wiki/Emoji

14
Ashley Clark

これを試してください:

  1. 絵文字をUnicodeに変換する

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
  2. Unicodeを絵文字に変換するのは非常に簡単

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
91
deepak

uILabelで絵文字を表示する:

NSString *bellEmojiString = @"U+1F514";

label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"];

+を3 zero桁に慎重に置き換える必要があります

8

変換して戻す:-

NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES];
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
7
yadav

これを試してください: http://opensource.Apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt

iOS5では左のコードを使用し、iOS 4以下では右のコードを使用します。

6
user392412

絵文字が(iosからバックエンドサーバーに、そしてiosに)往復しない場合、ios(少なくとも4.2+)がエンコーディングを正しく処理するため、問題はないはずです。何でも。しかし、アプリがサーバーと対話する場合、サーバーの戻り値が間違っていると思われますか?つまり、jsonが間違ってエンコードされました。

何時間も掘り下げた後、私は同じ問題を抱えていて、最終的に私のために働くこの答えを見つけました: https://stackoverflow.com/a/8339255/1090945

サーバーとしてRailsを使用している場合、これで十分です。ios/ xcodeで何もする必要はありません。UTF8/ 16エンコード処理を行わずにNSStringを渡すだけですサーバ。

Postegreはコードを正しく保存します。json:@messageをレンダリングする場合、jsonエンコードに問題があると仮定すると、iosクライアントにjson応答を送り返すだけです。

コンソールで簡単なテストを行うことで、Railsコンソールでjsonエンコーディングの問題があるかどうかをテストできます

test = {"smiley"=>"u{1f604}"} 

test.to_json

"{\" smiley\":\"\uf604\"}"(1が失われていることに注意してください)が出力される場合、この問題が発生しています。リンクのパッチにより修正されます。

4
lionel