IOS 5: Как преобразовать Emoji в символ Юникода?
Я хочу преобразовать Emoji в символ юникода в iOS 5.
Например, преобразование
в \ue415
.
Я пошел в NSStringEncoding в Ссылка на класс NSString.
В iOS 4, NSUTF16BigEndianStringEncoding
и NSUTF32BigEndianStringEncoding
дали мне <e415>
и <0000e415>
, соответственно, которые довольно близки к тому, что я хочу.
В iOS 5 результаты разные. Он сохраняет <d83dde04>
и <0001f604>
.
Как я могу получить \ue415
для
в iOS 5? Спасибо.
Ответы
Ответ 1
\ue415
является частью устаревшей кодировки для emoji и специфичен для некоторых японских носителей. SoftBank, NTT и docomo имели свои собственные персональные наборы эмозиев.
iOS 5 переместился на новую указанную поддержку Unicode 6.0 для символов символов emoji, а <0001f604>
- это кодовая точка Unicode для этого символа. В записи wikipedia об этом ссылается файл сопоставления EmojiSources.txt, который вам нужно будет использовать для самофиксации, если вам действительно нужно получить старые коды персональных символов.
http://en.wikipedia.org/wiki/Emoji
Ответ 2
Пожалуйста, попробуйте следующее:
-
Преобразование Emoji в unicode
NSData *data = [strEmo dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
-
Очень легко конвертировать unicode в Emoji
NSData *data = [strEmo dataUsingEncoding:NSUTF8StringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];
Ответ 3
Преобразовать обратно в: -
NSData *newdata=[recievedstring dataUsingEncoding:NSUTF8StringEncoding
allowLossyConversion:YES];
NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
Ответ 4
диспетчеризация emoji в UILabel:
NSString *bellEmojiString = @"U+1F514";
label.text = [NSSting stringWithFormat:@"Table: %@", @"\U0001F514"];
вы должны быть осторожны, замените +
цифрой 3 zero
Ответ 5
попробуйте следующее: http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt
на iOS5, используйте левый код, на iOS 4 и ниже, используйте правильный код.
Ответ 6
если ваш emoji не отправляется в оба конца (от ios до серверного сервера и обратно в ios), тогда у вас не должно быть проблем ios (не менее 4.2+) правильно обрабатывает кодировку, и вы не должны делать что угодно. но если ваше приложение взаимодействует с сервером, вы подозреваете, что значение возвращаемого вами сервера неверно? т.е. json закодирован неправильно.
У меня была та же проблема, после того, как выкапывали часами и, наконец, нашел этот ответ, который работает для меня: fooobar.com/info/192750/...
Если вы используете рельсы в качестве своего сервера, это все, что вам нужно сделать. Не нужно ничего делать в ios/xcode, просто передайте NSString без использования каких-либо файлов кодировки UTF8/16 на сервере.
Postegre сохраняет код правильно, это просто, когда вы отправляете ответ json обратно на ваш клиент ios, предполагая, что вы выполняете рендеринг json: @message, проблема json-кодирования имеет проблемы.
вы можете проверить, есть ли у вас проблема с json-кодированием в консоли rails, выполнив простой тест на консоли
test = {"smiley"=>"u{1f604}"}
test.to_json
если он печатает "{\" smiley\ ": \" \uf604\ "}" (обратите внимание, что 1 потерян), тогда у вас есть эта проблема. и исправление из ссылки исправит его.