【发布时间】:2017-11-20 13:12:38
【问题描述】:
背景
使用 Swift,我尝试通过 URLSession 获取 HTML,而不是先将其加载到 WKWebView,因为我只需要 HTML 而不需要任何子资源。我遇到了某些页面在加载到WKWebView 时可以工作的问题,但是当通过URLSession(甚至是简单的NSString(contentsOf: url, encoding String.Encoding.utf8.rawValue))加载时,UTF-8 转换失败。
如何重现
这失败了(打印“nil”):
print(try? NSString(contentsOf: URL(string: "http://www.huffingtonpost.jp/techcrunch-japan/amazon-is-gobbling-whole-foods-for-a-reported-13-7-billion_b_17171132.html?utm_hp_ref=japan&ir=Japan")!, encoding: String.Encoding.utf8.rawValue))
但是把网址改成网站首页,就成功了:
print(try? NSString(contentsOf: URL(string: "http://www.huffingtonpost.jp")!, encoding: String.Encoding.utf8.rawValue))
问题
如何“清理”包含格式错误的 UTF-8 的 URL 返回的数据?我想删除或替换格式错误的 UTF-8 中的任何无效序列,以便可以查看其余部分。 WKWebView 能够很好地呈现页面(并声称它也是 UTF-8 内容),您可以通过访问 URL 看到:http://www.huffingtonpost.jp/techcrunch-japan/amazon-is-gobbling-whole-foods-for-a-reported-13-7-billion_b_17171132.html?utm_hp_ref=japan&ir=Japan
【问题讨论】:
-
我试图验证该页面,但似乎确实有一些不是 UTF-8 validator.w3.org/…
-
是的——网络浏览器在处理畸形内容方面做得很好;我希望对
URLSession做同样的事情。
标签: ios swift unicode utf-8 nsstring