NSString с кириллицей в кодировку UTF8/Latin
У меня есть строка, поступающая из веб-службы, это смесь символов кириллицы и латиницы / английского языка. При построении массива путем разделения слов в предложении он показывает вместо букв буквы Unicode при использовании NSLog. Я хочу знать, как преобразовать любой из символов кириллицы / юникода в правильно читаемое латинское / английское слово. Например..
NSString *sentence = @"The Tobе Elіte"; (e in Tobe is Cyrillic, and i in Elite)
После помещения каждого слова в строке в массив, при печати я получаю это:
(
The,
"Tob\U0435",
"El\U0456te"
)
Мне нужно это, чтобы транслитерировать на латинский "Tobe" и латинский "Elite". Если я попытаюсь сравнить то, что я имею сейчас, делая
if(![@"Tobe" isEqualToString:[array objectAtIndex:1]])
//Tobe is not Equal to Tob\U0435
Я прошу прощения, если я объяснил это ужасно, если у вас есть какие-либо вопросы, которые помогут лучше понять мою проблему, не стесняйтесь спрашивать. Я пробовал несколько вещей, чтобы закодировать это в надлежащий UTF8. Например, это не работает:
NSMutableString *buffer = [string mutableCopy];
CFMutableStringRef bufferRef = (__bridge CFMutableStringRef)buffer;
CFStringTransform(bufferRef, NULL, kCFStringTransformToLatin, false);
В конечном итоге мне нужно найти в массиве подходящие слова, используя NSPredicate, но с Unicode в массиве это не позволяет мне это делать. Любая помощь приветствуется.
1 ответ
Это работает для меня:
NSString *sentence = @"The Tobе Elіte";
NSMutableString *buffer = [sentence mutableCopy];
CFMutableStringRef bufferRef = (__bridge CFMutableStringRef)buffer;
CFStringTransform(bufferRef, NULL, kCFStringTransformToLatin, false);
CFStringTransform(bufferRef, NULL, kCFStringTransformStripDiacritics, false);
NSArray *arr = [buffer componentsSeparatedByString:@" "];
NSLog(@"%@", arr);
и вы можете найти больше информации здесь: http://nshipster.com/cfstringtransform/