内容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编码类型损坏?的主要内容,如果未能解决你的问题,请参考以下文章

在 Objective-c 中使用 AFNetworking 对字典进行 URL 编码

iOS小技能:URL编码

iOS小技能:URL编码

iOS小技能:URL编码

PHP解码url编码问题

转换为 URL 编码