Не удается декодировать символы UTF8 из NSXMLParser - PullRequest
3 голосов
/ 16 сентября 2011

Я использую синтаксический анализатор XML для получения XML с сервера.

И у меня есть две вещи:

NSMutableArray *catalogueList;
Catalogue *currentCatalogue;

Каталог выглядит так:

#import "Catalogue.h"

@implementation Catalogue

@synthesize id_model;
@synthesize name;
@synthesize url;

@end

И этот кусок кода также:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{    
 if ([elementName isEqualToString:@"catalogue"]) 
{       
    // Add currentCatalogue to array
    [catalogueList addObject: currentCatalogue.url];
}

Это прекрасно работает, но есть небольшая проблема. Когда я делаю это:

 NSLog(@"Valoare url %@", currentCatalogue.url);

отображает правильный URL.

Но когда я сделаю это:

 NSLog(@"Valoare url %@", catalogueList);

вывод "ссылка".

что совсем не правильно: вместо Coupé я получаю Coup\U00e9. Подскажите пожалуйста, как получить в catalogueList правильную ссылку с символом é.

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Убедитесь, что ваше свойство url является строкой в ​​массиве.

@interface Catalogue : NSObject{

NSString *myURL;

}

NSString не изменяет специальные символы и должно выводить то же самое, что и входящее.Следующее Предполагается, что вы уже добавили строку в массив.

NSLog(@"My URL: %@", [currentCatalogue objectAtIndex:0]);

Ouput: My URL: http://host_server/uploads/modeles_pdf/41_TTRS_Coupé_TTRS_Roadster_Tarifs_20110428.pdf

Кроме того, попробуйте сделать это, чтобы увидеть, если вы получите ту же ошибку ...

NSString *temp = currentCatalogue.url;
//Check the string
NSLog(@"NSString temp: %@", temp);

//Add it to the array
[catalogueList addObject:temp];

//Assuming object is at index 0, check the object in the array
NSLog(@"My URL: %@", [catalogueList objectAtIndex:0]);
1 голос
/ 16 сентября 2011

Вы печатаете массив вместо объекта. Попробуйте это:

NSLog(@"catalogueList url %@", [catalogueList objectAtIndex:0]);

Проверьте этот вопрос SOF NSLog неправильная кодировка . Аналогичные проблемы с символами UTF8

0 голосов
/ 16 сентября 2011

Получить строковое значение UTF8 и использовать его

[currentCatalogue.url UTF8String];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...