NSXMLParser无法解析特殊字符(德语和法语)

5

我正在开发一款应用程序,该应用程序在私有服务器上进行搜索并向用户显示结果。问题是NSXLParser无法解析特殊的德语和法语字符。例如:应该是(Geschäftsführer),但我得到的是(äftsführer)。

我该如何解决这个问题?

这是我的代码:

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementname isEqualToString:@"results"])
    {
        currentJob = [SearchResult alloc];
    }

}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{


    if ([elementname isEqualToString:@"jobTitle"])
    {
        currentJob.jobTitle = currentNodeContent;
    }

    if ([elementname isEqualToString:@"location"])
    {
        currentJob.shortAddress = currentNodeContent;
    }

    if ([elementname isEqualToString:@"companyName"])
    {
        currentJob.employer = currentNodeContent;
    }

    if ([elementname isEqualToString:@"results"])
    {
        [self.jobs addObject:currentJob];
        currentJob = nil;
        currentNodeContent = nil;
    }
}

非常感谢您的帮助... 提前致谢


你能给我解析的XML文件的链接吗? - kuba
你的 foundCharacters 方法是错误的 - 即使对于单个字符串值,你也可能会多次调用此函数。 - kuba
1个回答

3

你的foundCharacters方法应该将字符串附加到一个NSMutableString对象中,因为针对单个值它可能会被多次调用。在didStartElement中,初始化一个NSMutableString对象(我们称之为elementContentString),然后执行以下操作:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)chars
{
    [self.elementContentString appendString:chars];
}

在你的didEndElement方法中,你可以将内容作为字符串获取。请注意,你应该制作它的非可变拷贝(这样你才不会用下一个元素覆盖它),使用[NSString stringWithString:self.elementContentString]


非常感谢!我使用了以下代码,现在它可以工作了。如果(!elementContentString) elementContentString = [[NSMutableString alloc] initWithString:string]; 否则 [elementContentString appendString:string]; - Zer0
我有一个´字符导致我的解析器停止。我该如何处理?我的foundCharacters方法看起来就像@kuba建议的那样。 - marciokoko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接