iOS 5: Jak przekonwertować Emoji na znak unicode?

Chcę przekonwertować Emoji na znak unicode w iOS 5.

Na przykład konwersja uśmiechnięta twarz z otwartymi ustami i zimnym potem na \ue415.

Poszedłem do NSStringEncoding W NSString Class Reference .

W iOS 4, NSUTF16BigEndianStringEncoding i NSUTF32BigEndianStringEncoding dali mi odpowiednio <e415> i <0000e415>, które są dość bliskie temu, czego chcę.

W iOS 5 wyniki są różne. Daje <d83dde04> i <0001f604>.

Jak mogę dostać \ue415 za uśmiechnięta twarz z otwartymi ustami i zimnym potem w iOS 5? Dziękuję.

Author: Protocole, 2011-12-26

6 answers

\ue415 jest częścią starszego kodowania emoji i jest specyficzny dla niektórych japońskich przewoźników. SoftBank, NTT i docomo miały własne prywatne zestawy znaków emoji.

IOS 5 przeniósł się do nowo podanej obsługi Unicode 6.0 Dla płaszczyzn znaków emoji i <0001f604> jest punktem kodu Unicode dla tego znaku. Wpis w Wikipedii o tym odwołuje się do Emotikon.plik mapowania txt, który musisz użyć do samodzielnego mapowania, jeśli naprawdę potrzebujesz starego prywatne kody znaków.

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

 14
Author: Ashley Clark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-26 18:56:12

Proszę spróbować:

  1. Konwertuj Emoji na unicode

    NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
  2. Bardzo łatwy do konwersji unicode do Emoji

    NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
    NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; 
    
 92
Author: deepak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-09 12:49:19

Convert back to:--

NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding 
allowLossyConversion:YES];
    NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
 7
Author: yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-05 12:04:02

Dispalying emoji in UILabel:

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

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

Należy uważać zastąpić {[1] } cyfrą 3 zero

 7
Author: Hashem Aboonajmi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-11 07:00:41

Spróbuj tego: http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt

Na iOS5 Użyj lewego kodu, na iOS 4 i poniżej użyj prawego kodu.

 6
Author: user392412,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-18 04:36:39

Jeśli twój emoji nie jedzie w obie strony (z ios na serwer backendowy i z powrotem na ios), to nie powinieneś mieć żadnego problemu ios (co najmniej 4.2+) poprawnie obsługuje kodowanie i nie musisz nic robić. ale jeśli Twoja aplikacja wchodzi w interakcję z serwerem, czy podejrzewasz, że wartość zwracana przez serwer jest nieprawidłowa? czyli JSON źle zakodowany.

Miałem ten sam problem, po kopaniu godzinami i w końcu znalazłem odpowiedź, która działa na mnie: https://stackoverflow.com/a/8339255/1090945

Jeśli używasz rails jako serwera, to jest wszystko, co musisz zrobić. Nie trzeba nic robić w ios / xcode, wystarczy przekazać NSString bez robienia żadnych UTF8 / 16 rzeczy kodowania do serwera.

Postegre przechowuje kod poprawnie, po prostu po wysłaniu odpowiedzi json z powrotem do klienta ios, zakładając, że renderujesz json:@message, kodowanie json ma problem.

Możesz sprawdzić, czy masz kodowanie json problem w konsoli rails wykonując prosty test w konsoli

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

Test. To_json

Jeśli wyświetli "{\"smiley\":\ " \ uf604\"} "(zauważ, że 1 jest utracone), to masz ten problem. a patch z linku to naprawi.

 4
Author: lionel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:27