NSXMLParserparsing使用Windows-1256编码的xml文件

我想parsingrss文件在Windows-1256“编码,但它不被parsing器读取我做了很多parsingUTF8编码,但只有这不工作,为什么?

rss文件与Windows-1256

解决的办法是

NSString *myStr = [[NSString alloc] initWithData:myData encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic) ]; myStr = [myStr stringByReplacingOccurrencesOfString:@"encoding=\"windows-1251\"" withString:@""]; NSData* aData = [myStr dataUsingEncoding:NSUTF8StringEncoding]; NSXMLParser *parser = [[NSXMLParser alloc] initWithData:aData]; 

感谢穆罕默德为我答复了10天,我们没有find答案。 这是我的代码:

 -(void)parseXMLFileAtURL:(NSString *)URL { NSURL *xmlURL = [NSURL URLWithString:URL]; NSData * dataXml = [[NSData alloc] initWithContentsOfURL:xmlURL]; NSString *myStr = [[NSString alloc] initWithData:dataXml encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic)]; myStr = [myStr stringByReplacingOccurrencesOfString:@"encoding=\"windows-1256\"" withString:@""]; NSData *aData = [myStr dataUsingEncoding:NSUTF8StringEncoding]; NSXMLParser *rssParser = [[NSXMLParser alloc] initWithData:aData]; [dataXml release]; [rssParser setDelegate:self]; [rssParser setShouldProcessNamespaces:NO]; [rssParser setShouldReportNamespacePrefixes:NO]; [rssParser setShouldResolveExternalEntities:NO]; [rssParser parse]; [rssParser setDelegate:nil]; [rssParser release]; 

}

你也可以试试这个:

 int length = str.length >100 ? 100:str.length; NSString*mystr= [str stringByReplacingOccurrencesOfString:@"encoding=\".*?\"" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, length)]; 

如果您在NSXMLParser委托中实现了parseErrorOccurred:方法,它会给出错误的确切原因。

就像是:

 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {  NSLog(@"NSXMLParser ERROR: %@ - %@", , [parseError localizedDescription], [parseError localizedFailureReason]); }