] Преобразование экранированных символов UTF8 обратно в их исходную форму

Я пытаюсь прочитать строки из массива, который поступает из списка, и распечатать эти строки.

строки в массиве содержат экранированные символы UTF8 - например, "Nuša Florjančič" становится "Nu \ u0161a Florjan \ u010di \ u010d" при чтении из списка.Невозможно изменить содержимое списка plist, но моя программа должна правильно отображать имена.

Странно то, что Objective-C, кажется, делает это автоматически, когда я жестко кодирую строку. Однако, если я получаю строку из списка, ничего не происходит.

В качестве примера приведу код:

NSString *name1 = @"Nu\u0161a Florjan\u010di\u010d";
NSString *name2 = [list objectAtIndex:0];       
NSLog(@"name 1: %@", name1);
NSLog(@"name 2: %@", name2);

[list objectAtIndex: 0 ] содержит @ "Nu \ u0161a Florjan \ u010di \ u010d" - с той лишь разницей, что он был установлен через редактор plist.

Вывод на консоль:

2011-10-22 18:00:02.595 Test[13410:11c03] name 1: Nuša Florjančič
2011-10-22 18:00:02.595 Test[13410:11c03] name 2: Nu\u0161a Florjan\u010di\u010d

Я пробовал все, включая преобразование строки в C-строку, а затем создание объекта NSString с кодировкой UTF-8, но ничего не помогло. вообще.

Буду очень признателен за любые ваши советы, которые могут помочь мне решить эту, казалось бы, приземленную проблему.

15
задан rob mayoff 13 May 2014 в 19:03
поделиться