我已经使用此方法从URL下载XML。 问题是编码字符。
-(void) scaricamentoXML{
/*Save XML IN LOCALE*/
NSString* docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"Doc dir: %@:",docsDir);
//dichiaro il file locale in cui salvare i dati XML
NSString* fileToDownload = @"provaXML.xml";
NSString *hostURLString = @"http://demo.gigamips.com/rss.php?authkey=12345";
NSURL *xmlURL = [NSURL URLWithString:hostURLString];
NSLog(@"xmlURL = %@", xmlURL);
//gestione codifica UTF-8
NSError *error;
NSString *dataString = [[NSString alloc] initWithContentsOfURL:xmlURL encoding:NSASCIIStringEncoding error:&error];
NSLog(@"DataString = %@", dataString);
//NSData *xml = [[NSData alloc]initWithContentsOfURL:xmlURL];
NSData *xml = [dataString dataUsingEncoding:NSUTF8StringEncoding];
//creo una stringa di appoggio in encoding UTF8 - verificare se funziona
NSString *str = [[NSString alloc] initWithData:xml encoding:NSUTF8StringEncoding];
NSLog(@"NSData xml = %@", xml);
//NSString *newStr = [[NSString alloc] initWithData:xml encoding:NSUTF8StringEncoding];
//NSLog(@"newStr = %@", newStr);
NSString *filePath = [docsDir stringByAppendingPathComponent: fileToDownload];
//[xml writeToFile: filePath atomically: NO];
[str writeToFile: filePath atomically: NO];
/*Save XML IN LOCALE*/
/*SALVO LE IMMAGINI MINI IN LOCALE*/
AuthParserImages *parser=[[AuthParserImages alloc]init];
entryArray=[parser startParserLocale:@"provaXML"];
GestioneImages *gi = [[GestioneImages alloc]init];
for(int i =0; i< [entryArray count];i++){
item=[entryArray objectAtIndex:i];
[gi saveImageLocal:item.urlImageLow :item.id];
}
/*SALVO LE IMMAGINI MINI IN LOCALE*/
/*CREA IL FILE GESTIONE NEW*/
gp = [[GestionePlist alloc]init];
[gp savePlist:@"begin"];
/*CREA IL FILE GESTIONE NEW*/
[self controlloXML];
[activityIndicator stopAnimating];
}
我看不到像'或重音ù - à - ò等特殊的特征......
答案 0 :(得分:0)
问题在于您的网络服务。您没有收到使用UTF8字符串编码编码的数据。
答案 1 :(得分:0)
虽然http://demo.gigamips.com/rss.php?authkey=12345 中的XML 以UTF-8编码,但它不使用正确的字符。例如,假设卷曲单引号'(U + 2019)出现,它使用U + 0092,这是一个不可打印的控制字符。
看起来该文档的作者在Windows-1252中编写了它,然后使用假设为latin-1的工具将其转换为UTF-8。
您可以尝试说服作者首先使用正确的字符,或者编写代码以用可能的替代品替换控制字符(即U + 2018而不是U + 0091,U + 2019而不是U + 0092,U + 201C而不是U + 0093,等等..你可以使用Windows-1252的字符表作为参考)