我需要解析带有法语口音的XML Feed,例如'é'。 当我解析XML时,我失去了重音......
我的代码出了什么问题......
NSString *url = [NSString stringWithFormat:@"%@",@"my_xml_url"];
NSURL *myURL = [NSURL URLWithString:url];
NSString *myData = [[NSString alloc] initWithContentsOfURL:myURL];
XMLParser *parser = [[XMLParser alloc] init];
[parser parseXMLFile:myData];
当我开始解析.....
- (void)parseXMLFile:(NSString *)data {
BOOL success;
//array for the ranking
rows = [[NSMutableArray alloc] init];
index = 0;
self.currentString = [NSMutableString string];
storingCharacters = NO;
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[data data UsingEncoding:NSUTF8StringEncoding]];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:YES];
success = [parser parse];
self.currentString = nil;
//release memory
[parser release];
}
我看不出问题出在哪里......
由于
答案 0 :(得分:1)
它似乎是stringWithContentsOfURL
的编码问题尝试:
NSError *lookupError = nil;
NSString *myData = [NSString stringWithContentsOfURL:myUrl
encoding:NSUTF8StringEncoding error:&lookupError];
答案 1 :(得分:0)
您首先阅读XML数据并将其转换为NSString,然后将该字符串转换回数据。正如krtrego所说,to-string转换可能选择了错误的编码。相反,您应该将来自URL的原始数据直接提供给NSXMLParser,NSXMLParser能够更准确地解释正确的编码(即使用XML文件顶部的元数据)。
所以改为使用
NSData* myData = [[NSData dataWithContentsOfURL: url options: 0 error: &error];
然后在初始化NSXMLParser时传递该数据。