无法解码NSXMLParser中的UTF8字符

时间:2011-09-16 08:25:10

标签: iphone xcode nsmutablearray

我使用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);

显示正确的网址。

但是当我这样做时:

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

输出为“link”。

根本不正确:我得Coupé而不是Coup\U00e9。请告诉我如何在catalogueList中获取与é字符的正确链接。

3 个答案:

答案 0 :(得分:2)

确保 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 :(得分:1)

您正在打印数组而不是对象。试试这个:

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

查看此SOF问题NSLog incorrect encoding。 与UTF8字符类似的问题

答案 2 :(得分:0)

获取UTF8字符串值并使用它

[currentCatalogue.url UTF8String];