28

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

たとえば、 に変換口を開けて冷や汗をかいた笑顔\ue415ます。

NSString Class ReferenceのNSStringEncodingに行きました。

iOS 4 ではNSUTF16BigEndianStringEncoding、それぞれ、NSUTF32BigEndianStringEncoding私が望むものに非常に近い と が得られました。<e415><0000e415>

iOS 5 では、結果が異なります。<d83dde04>とを与え<0001f604>た.

iOS 5 で入手\ue415するにはどうすればよいですか? 口を開けて冷や汗をかいた笑顔ありがとうございました。

4

6 に答える 6

93

これを試してください:

  1. 絵文字をユニコードに変換

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
  2. ユニコードを絵文字に変換するのはとても簡単

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
于 2012-06-11T13:41:05.597 に答える
14

\ue415は、絵文字のレガシー エンコーディングの一部であり、特定の日本の通信事業者に固有のものです。SoftBank、NTT、および docomo には、それぞれ独自の絵文字セットがありました。

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

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

于 2011-12-26T18:56:12.763 に答える
7

次のように変換し直します:-

NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES];
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
于 2012-09-04T11:36:42.663 に答える
7

UILabel で絵文字を表示する:

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

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

注意が必要です+3zero桁に置き換えてください

于 2014-09-11T07:00:41.647 に答える
6

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

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

于 2012-03-18T04:36:39.467 に答える
4

絵文字が (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 が失われていることに注意してください) と出力される場合は、この問題が発生しています。リンクからのパッチで修正されます。

于 2012-06-04T00:12:20.203 に答える