内容URL编码类型损坏?
Posted
技术标签:
【中文标题】内容URL编码类型损坏?【英文标题】:Corruption of contentsURL encoding type? 【发布时间】:2015-04-20 21:47:31 【问题描述】:我仍在努力访问某些 Google 页面,并尝试了多种编码类型组合。我也尝试过 UTF8,如果失败则默认使用。这就是事情变得非常奇怪的地方。
我执行以下操作:
println("URL within process page = \(url)")
println("Trying NSUTF8")
origURLString = String(contentsOfURL: url, encoding: NSUTF8StringEncoding, error: &error)
if (error != nil)
println("Error = \(error)")
println("Trying NSASCII next")
origURLString = String(contentsOfURL: url, encoding: NSASCIIStringEncoding, error: &error)
if (error != nil)
println("Error = \(error)")
if (error != nil)
return "There seems to be a problem going to this site"
对 contentsOfURL 的两次调用都失败并出现以下跟踪:
尝试 NSUTF8 Error = Optional(Error Domain=NSCocoaErrorDomain Code=261 "操作无法完成。(Cocoa 错误 261.)" UserInfo=0x7fbbda599b00 NSURL=http://www.google.com/search?ie=ISO-8859-1&hl=en-GB&source=hp&q=hello&btnG=Google+Search&gbv=1, NSStringEncoding=4)
接下来尝试 NSASCII Error = Optional(Error Domain=NSCocoaErrorDomain Code=261 "操作无法完成。(Cocoa 错误 261.)" UserInfo=0x7fbbda599b00 NSURL=http://www.google.com/search?ie=ISO-8859-1&hl=en-GB&source=hp&q=hello&btnG=Google+Search&gbv=1, NSStringEncoding=4)
但是,如果我不尝试使用 NSUTF8StringEncoding 而只使用 ASCII 编码:
origURLString = String(contentsOfURL: url, encoding: NSASCIIStringEncoding, error: &error)
然后这行得通(因为编码不正确,所以效果不佳)。至少没有错误代码,我得到一个完整的 html 页面。
显然,我不能对所有内容都使用 ASCII 编码,我宁愿构建一种通用方法,先检查 UFT8,然后再默认为其他内容。
我的第一种方法是否破坏了某些东西?错误信息是否遗留?
我尝试在一个循环中测试每个 NSEncodingType,但都失败了,所以我将它缩小到只有两个,我遇到了同样的问题。
想法?我完全不知所措。
【问题讨论】:
【参考方案1】:此功能可帮助我更正我的文本字符串:
func utf(txt:String)->NSString
var newtxt = txt.stringByReplacingOccurrencesOfString("\\n", withString: " ", options: NSStringCompareOptions.LiteralSearch, range: nil)
if var scb = NSString(CString: newtxt ,encoding:NSNonLossyASCIIStringEncoding)
return scb
else
var scb = NSString(CString:newtxt, encoding:NSUTF8StringEncoding)
return scb!
这很有趣,因为它占用了适合的编码 根据要发送的文本字符串。
【讨论】:
谢谢埃利亚斯。这看起来是一个非常好的通用编码例程,但我不确定它如何帮助解决 URL 内容问题,或者解释为什么在 ASCII 请求之前执行 UTF 请求会阻止 ASCII 请求工作。 你可以我开始尝试HTTPTask()
on Swift swiftHTTP 说 261 错误是由于 SSL 证书以上是关于内容URL编码类型损坏?的主要内容,如果未能解决你的问题,请参考以下文章