我在我的 XML 应用程序中通过网络提取一个 XML 文件。我知道文件应该使用 ISO-8859-1 编码。
因此,当我拉动它时,我尝试对其进行解码:
func extractXMLFromHttpResponse(data: NSData) -> XMLIndexer {
let xmlContent = NSString(data: data, encoding: NSISOLatin1StringEncoding)!
print(xmlContent)
return SWXMLHash.parse(xmlContent as String)
}
注意:XMLIndexer 来自于使 XML 解析更容易的SWXMLHash 库。
但是,在将 NSString 打印到我的调试控制台时,我注意到一些特殊字符(西班牙语),例如
'ñ' 或 'é'
没有正确解码。
作为解码过程的结果,我看到的是文本而不是字节。第一行是:
<?xml version="1.0" encoding="ISO-8859-1"?>
所以我想,我选择了正确的编码。但是我不明白为什么某些字符无法解码。解码数据时我做错了吗?
奇怪的是,如果我手动执行 GET 请求并在浏览器中查看文件,则没有解码错误。
编辑:
正如 TwoStraws 在他的评论中建议的那样,我提出了 curl 请求。它返回给我以下信息:
HTTP/1.1 200 正常
缓存控制:私有
内容长度:75030
内容类型:文本/xml
过期:2015 年 12 月 16 日星期三 09:13:05 GMT
服务器:Microsoft-IIS/7.5
设置 Cookie: ...; 路径=/
X-Powered-By: ASP.NET
日期:格林威治标准时间 2015 年 12 月 16 日星期三 09:13:05
即使我这样做
curl -v "http://www.example.com/webserviceGetCall"
它没有说明 xml 文件是如何编码的。这意味着什么?我认为它也应该在 Content-type 描述中返回编码。