【问题标题】:Corruption of contentsURL encoding type?内容URL编码类型损坏?
【发布时间】: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,但都失败了,所以我将它缩小到只有两个,我遇到了同样的问题。

想法?我完全不知所措。

【问题讨论】:

    标签: ios swift url encoding


    【解决方案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 证书
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    相关资源
    最近更新 更多