之前后台接口为商品详情进行了一次改造,所有商品的详情信息不返回字符串内容,而是返回了一个链接地址,APP通过加载链接地址内容进行展示。当时跟接口讨论完之后就开工干活,在联调阶段发现,APP加载后台接口返回的HTML会出现乱码问题,于是找接口人员处理,可接口人员说你们APP能自己处理吗?
答:能😏
由于项目中采用的是WKWebView,所以下面是WKWebView针对编码格式问题导致的乱码进行处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { NSString *_webUrlStr = navigationAction.request.URL.absoluteString; NSString *lastName =[[_webUrlStr lastPathComponent] lowercaseString]; if ([lastName containsString:@".html"]) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData *data = [NSData dataWithContentsOfURL:navigationAction.request.URL]; dispatch_async(dispatch_get_main_queue(), ^{ [self.webView loadData:data MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:nil]; }); }); decisionHandler(WKNavigationActionPolicyCancel); return; } decisionHandler(WKNavigationActionPolicyAllow); } |
不过,最后当然还是接口对HTML编码方式进行了修改。😄