我使用此代码获取html内容,它适用于大多数网站..这段代码给了我下面的网站问题(我需要!)我不知道为什么! 代码给了我:
错误:错误域= NSCocoaErrorDomain代码= 261"无法使用Unicode(UTF-8)文本编码打开文件“d-0002.htm”。" UserInfo = {NSURL = http://www.mktbtk.com/dir/nab/2/d-0002.htm,NSStringEncoding = 4}
sudo su
sudo npm install
注意:当我使用ascii编码时,它工作..但内容是阿拉伯语所以我需要utf8 ..任何人都可以帮助
答案 0 :(得分:0)
您显示的页面以此标题回复:
Content-Type: text/html; charset=windows-1256
它不是UTF-8,而是Windows-1256。
准备:
extension String.Encoding {
static let windows1256 = String.Encoding(rawValue:
CFStringConvertEncodingToNSStringEncoding(
CFStringEncoding(CFStringEncodings.windowsArabic.rawValue)
)
)
}
使用.windows1256
代替.utf8
:
let myURLString = "http://www.mktbtk.com/dir/nab/2/d-0002.htm"
guard let myURL = URL(string: myURLString) else {
print("Error: \(myURLString) doesn't seem to be a valid URL")
return
}
do {
let myHTMLString = try String(contentsOf: myURL, encoding: .windows1256) //<- not .utf8
print("HTML : \(myHTMLString)")
} catch let error {
print("Error: \(error)")
}
我不读阿拉伯语,所以我不确定这是否是正确的解决方案。但我相信这值得尝试。
顺便说一句,你不应该在主线程中使用String.init(contentsOf:encoding:)
,这可能会阻止主线程,并可能导致你的应用被拒绝。