我正在使用 nsxmlparser,想知道如何将 ISO-8859-1 正确解析为 NSString。
目前,我正在获取带 Â 的双字节字符的结果。
我使用的 XML(不是我创建的)以 <?xml version="1.0" encoding="ISO-8859-1"?>
开头
以下是我正在使用的基本调用(省略了 NSThread 调用)。
NSString *xmlFilePath = [[NSBundle mainBundle] pathForResource:sampleFileName ofType:@"xml"];
NSString *xmlFileContents = [NSString stringWithContentsOfFile:xmlFilePath encoding:NSUTF8StringEncoding error:nil];
NSData *data = [xmlFileContents dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser parse];
最佳答案
XML specification 推荐显式 character encoding declaration 在文档序言中。您的输入文档可能有一个;这将告诉您解析器必须使用的编码来解释字符输入。
在没有显式声明的情况下,同一部分说将输入视为 UTF-8 或 UTF-16(如果事实证明未将其编码为,则文档出错两者之一)。
因此,如果您的 XML 解析器忽略了显式编码声明,或者在没有显式声明的情况下使用了错误的编码,那么您的解析器就是 Doing It Wrong™,需要进行修复以符合 XML 规范。
关于xml - 使用 NSXmlParser 解析 ISO-8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485308/