Подтвердить что ты не робот

IOS 5: Как преобразовать Emoji в символ Юникода?

Я хочу преобразовать Emoji в символ юникода в iOS 5.

Например, преобразование smiling face with open mouth and cold sweat в \ue415.

Я пошел в NSStringEncoding в Ссылка на класс NSString.

В iOS 4, NSUTF16BigEndianStringEncoding и NSUTF32BigEndianStringEncoding дали мне <e415> и <0000e415>, соответственно, которые довольно близки к тому, что я хочу.

В iOS 5 результаты разные. Он сохраняет <d83dde04> и <0001f604>.

Как я могу получить \ue415 для smiling face with open mouth and cold sweat в iOS 5? Спасибо.

4b9b3361

Ответ 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

Ответ 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 потерян), тогда у вас есть эта проблема. и исправление из ссылки исправит его.