использование строки кодирования, NSISOLatin1StringEncoding
- (id)initWithCString:(const char *)nullTerminatedCString
encoding:(NSStringEncoding)encoding
Или коротко,
NSString *str = [NSString stringWithCString:cfilename
encoding:NSISOLatin1StringEncoding];
Edit после комментариев:
Это какое-то странное. Я сделал несколько экспериментов после ваших комментариев и нашел какое-то странное поведение.
- (void) testStringEncodingOK {
NSString *string = @"h\u00c3\u00a5r";
const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *cs = [NSString stringWithUTF8String:cfilename];
NSLog(@"String: %@", cs);
}
Этот выход: HAR
Но если вы получаете \ U в столице, а не \ и, то я заменил их \ и. И тогда это не сработало. Кажись в,
- (void) testStringEncodingConfused {
NSString *string = @"h\\U00c3\\U00a5r";
string = [string stringByReplacingOccurrencesOfString:@"\\U" withString:@"\\u"];
NSLog(@"Original string:%@", string); // now string = @"h\u00c3\u00a5r"
const char *cfilename=[string cStringUsingEncoding:NSISOLatin1StringEncoding];
NSString *cs = [NSString stringWithUTF8String:cfilename];
NSLog(@"String: %@", cs);
}
Выходной сигнал есть, ч \ u00c3 \ u00a5r
Если вы действительно вернетесь, как бы вы сказали, была ли 'abba' поп-группой или двумя шестнадцатеричными символами? –
Строка, которую вы получаете с сервера: «Hc3b8rt» или «H \ xC3 \ xB8rt»? – ale0xB
@ ale0xB Первый! –