我仍然在努力访问某些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并且失败了,所以我把它缩小到只有两个,我得到了同样的问题。
想法?我完全失去了。
答案 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!
}
}
这很有趣,因为它占用了适合的编码 根据要发送的文本字符串。