Описание NSDictionary не возвращает символы utf8? - PullRequest
3 голосов
/ 19 августа 2011

У меня есть NSDictionary со строками utf8 в качестве объектов.При печати объектов печатаются специальные символы, как и должно быть.

Но символы utf8 выводятся неправильно при преобразовании словаря в строку с помощью метода description.

NSDictionary *test = [NSDictionary dictionaryWithObject:@"Céline Dion" forKey:@"bla"];
NSLog(@"%@",[test objectForKey:@"bla"]); // prints fine
NSLog(@"%@",test);                       // does not print fine, é is replaced by \U00e
NSLog(@"%@",[test description]);         // also does not print fine

Как я могу напечатать NSDictionary при сохранении символов utf8?

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Я бы не беспокоился о том, что делает-описание, это просто для отладки.

Технически, у вас нет строк UTF-8. У вас есть строки (которые являются Unicode). Вы не знаете, что NSString использует внутри, и вас это не должно волновать. Если вам нужна строка UTF-8 (например, когда вы переходите к API C), используйте -UTF8String.

0 голосов
/ 19 августа 2011

Там есть способ, но я не могу сейчас это проверить:

NSString *decodedString = [NSString stringWithUTF8String:[[test description] cStringUsingEncoding:[NSString defaultCStringEncoding]]];
NSLog(@"%@",decodedString);
...