iOS 5: Jak przekonwertować Emoji na znak unicode?
Chcę przekonwertować Emoji na znak unicode w iOS 5.
Na przykład konwersja 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ę.
<d83dde04>
i <0001f604>
.
Jak mogę dostać \ue415
za w iOS 5? Dziękuję.
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.
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ć:
-
Konwertuj Emoji na unicode
NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding]; NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
-
Bardzo łatwy do konwersji unicode do Emoji
NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding]; NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];
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];
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
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.
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.
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