xml - 使用 NSXmlParser 解析 ISO-8859-1

标签 xml iphone character-encoding nsxmlparser

我正在使用 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/

相关文章:

Python - 解析 Json 和 XML 哪个更快?

XML 默认命名空间问题

iphone - 类(class)值(value)始终为-1

c# - XDocument.Save() 删除了我的 实体

c# - 删除带有命名空间前缀的 xmlns 属性

iphone - 将核心数据同步到 Web 服务器

iphone - 针对为第三方应用程序开发人员构建的 API 进行用户身份验证

php - 问号代替汉字

python - 如何在 Python 中获取葡萄牙语字符?

python - Ansi 到 UTF-8 使用 python 导致错误