У меня возникли проблемы с получением текстового сообщения с моего сервера, особенно с кодировкой. Сообщения могут быть со многих языков (поэтому они могут иметь акценты, быть на японском языке, ...) и могут включать эможи.Проблема с кодировкой строки и emoji
Я получаю сообщение с JSON
с некоторой информацией. Вот некоторые журналы пример:
(lldb) po dataMessages
<__NSCFArray 0x14ecc7f0>(
{
author = "User 1";
text = "Hier, c'\U00c3\U00a9tait incroyable";
},
{
...
}
)
(lldb) po [[dataMessages objectAtIndex:0] objectForKey:@"text"]
Hier, c'était incroyable
Я могу получить правильный текст с:
const char *c = [[[dataMessages objectAtIndex:indexPath.row] objectForKey:@"text"] cStringUsingEncoding:NSWindowsCP1252StringEncoding];
NSString *myMessage = [NSString stringWithCString:c encoding:NSUTF8StringEncoding];
Однако, если сообщение содержит смайлик, cStringUsingEncoding:
возвращает значение NULL
.
У меня нет контроля на моем сервере, поэтому я не могу изменить их кодировку, прежде чем сообщения будут отправлены мне.
Я получаю 'dataMessage' методом' AFHTTPRequestOperation' из библиотеки 'AFNEtworking'. 'dataMessage' является возвратом объекта с моего сервера, и, как вы можете видеть, это уже строка. Поэтому я не могу использовать 'initWithData: encoding:' – zbMax