0

我正在尝试使用 NSXmlParser 解析 ISO-8859-1 数据。使用 Apple 自己的示例解析 ISO-8859-1,我有以下内容。

// path to xml file
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"];

// string of xml contents
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil];

NSLog(@"contents: %@", xmlFileContents);

我在控制台中看到,字符串的内容是准确的。

但是,当我尝试将其转换为 NSData 对象(用于解析器)时,我会执行以下操作。

NSData *xmlData = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding];

但是当我的 didStartElement 委托被调用时,我看到Â出现了我认为是编码差异的结果。

NSXmlParser 可以处理 ISO-8859-1,如果可以,我做错了什么?

4

1 回答 1

4

以防万一其他人最终在这个线程上试图弄清楚如何获得<?xml version="1.0" encoding="ISO-8859-1"?>以 NSXmlParser 正确读取开头的 XML,这就是我的工作。

// path to xml file
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"];

// string of xml contents (read in NSUTF8StringEncoding)
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil];

// interpret string of XML contents as ISO-8859-1 (NSISOLatin1StringEncoding)
NSData *xmlData = [xmlFileContents dataUsingEncoding:NSISOLatin1StringEncoding];

// spawn new thread to parse data
[NSThread detachNewThreadSelector:@selector(parseLineData:) toTarget:self withObject:xmlData];

读入 XML 内容 asNSUTF8StringEncoding然后进入NSDataas是我避免虚假字符NSUTF8StringEncoding的唯一方法。Â

于 2010-03-22T00:23:29.990 回答