我在XML应用程序中通过网络拉取XML文件。 我知道该文件应该使用ISO-8859-1进行编码。iOS:NSString(数据:NSData,编码:UInt)在某些字符处失败
所以我尝试当我把它给它解码:
func extractXMLFromHttpResponse(data: NSData) -> XMLIndexer {
let xmlContent = NSString(data: data, encoding: NSISOLatin1StringEncoding)!
print(xmlContent)
return SWXMLHash.parse(xmlContent as String)
}
注:XMLIndexer是从SWXMLHash library,使XML解析更容易。
打印的NSString我调试控制台不过的时候,我注意到,一些特殊字符(西班牙),如
“n”或“E”
不能正确解码。
作为解码过程的结果,我看到文本而不是字节。第一行是:
<?xml version="1.0" encoding="ISO-8859-1"?>
所以我想,我选择了正确的编码。但我不明白为什么有些字符不能解码。当我解码数据时,我做错了什么?
奇怪的是,如果我手动执行GET请求并在浏览器中查看文件,则没有解码错误。
编辑:
由于TwoStraws在他的评论所说,我做了卷曲的要求。它返回我下面的:
HTTP/1.1 200 OK
的Cache-Control:私人
的Content-Length:75030
内容类型:文本/ XML
到期时间:2015年12月16日星期三09:13:05 GMT
服务器:Microsoft-IIS/7.5
Set-Cookie:...;路径=/
X-已启动方式:ASP.NET
日期:星期三,2015年12月16日9时13分05秒GMT
即使我我
curl -v "http://www.example.com/webserviceGetCall"
它没有说明如何编码xml文件。那是什么意思?我认为它应该返回编码以及Content-type描述。
尝试在终端窗口中运行'curl -I“http://yoursite.com/whatever.xml”'以确保ISO-8859-1中的内容实际上被*发送*。 XML可以说任何想要的,它只是文本。最好确定! – TwoStraws
@TwoStraws感谢您的回答。我更新了这个问题。 – slashburn
当你从URL中获取它时,你可以试试这个代码吗?对不起,评论对我来说是非常差的地方发布代码! \t if let url = NSURL(string:“http://yoursite.com/file.xml”){ \t \t if let str = try? NSString(contentsOfURL:url,usedEncoding:nil){ \t \t \t //你的字符串在这里被解析了吗? \t \t} \t} – TwoStraws