В моем интерфейсе какао есть строка, которая должна иметь специальное форматирование (шрифты, цвета и т. Д.). Естественно, я использую приписанную строку. Для удобства я инициализирую строку как RTF:
NSString *inputString = @"This string has special characters";
NSString *rtfString = [NSString stringWithFormat:@"{@"***LENGTHY RTF FORMATTING STRING *** %@", inputString];
NSAttributedString *testString = [[NSAttributedString alloc] initWithRTF:[rtfString dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:nil];
Проблема в том, что у «inputString» могут быть специальные символы, которые не отображаются должным образом из-за кодировки UTF8. Они заменены другими символами.
é остается как Å ©.
Итак, сейчас я делаю это:
NSData* intermediateDataString=[inputString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
inputString = [[[NSString alloc] initWithData:intermediateDataString encoding:NSUTF8StringEncoding] autorelease];
Не отображает неожиданные символы, но удаляет все акценты и оставляет вместо них букву без акцента - é остается как e
Это улучшение, поскольку все можно прочитать, но оно далеко от идеального.
Мысли