2011-09-16 62 views
3

我使用XML解析器從服務器檢索xml。無法解碼來自NSXMLParser的UTF8字符

而且我有以下兩點:

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é角色的正確鏈接。

+1

這看起來更像iOS的比Android :) – Luke

+0

這是iphone.See的tags.I糾正title.Sorry – adrian

回答

1

要打印的陣列,而不是對象。試試這個:

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

看看這個SOF的問題NSLog incorrect encoding。 UTF8字符的類似問題

+0

它顯示此<目錄:0x6d3b3c0> – adrian

+0

你的'url'變量是一個字符串,對不對?它在我的工作完美 – tipycalFlow

+0

對我來說它不:) – adrian

0

獲取UTF8字符串值,並用它

[currentCatalogue.url UTF8String]; 
+0

我試過並得到這個終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:' - [__ NSArrayM UTF8String]:無法識別的選擇器發送到實例0x7a39d我的應用程序崩潰在該行! – adrian

+0

對不起,我錯了 - 打錯了變量名。這個想法是從您從服務器獲得的字符串中獲取UTF8String。編輯我的答案... – sElanthiraiyan

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]); 
相關問題