内容URL编码类型的损坏?

时间:2015-04-20 21:47:31

标签: ios swift url encoding

我仍然在努力访问某些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   错误=可选(错误域= NSCocoaErrorDomain代码= 261“操作无法完成。(可可错误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   错误=可选(错误域= NSCocoaErrorDomain代码= 261“操作无法完成。(可可错误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 个答案:

答案 0 :(得分:0)

此功能可帮助我更正文字字符串:

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!
        }
    }
  

这很有趣,因为它占用了适合的编码   根据要发送的文本字符串。