Swift 3中UIWebView渲染API返回HTML时撇号显示异常问题
解决Swift 3中UIWebView渲染HTML特殊字符乱码问题
嘿,这个问题我太熟了!你现在碰到的撇号变成乱码(比如“Transportation’s”显示成“Transportationâs”)的问题,根源完全在读取HTML内容时用错了字符编码~
你当前用.ascii编码去解析Web API返回的内容,但现在几乎所有现代Web接口返回的都是UTF-8编码的内容。ASCII编码只支持最基础的英文字符,像’这种Unicode特殊字符,用ASCII解析就会被错误转换成乱码。
直接把编码改成.utf8就能解决问题,修正后的代码如下:
do { let myHTMLString = try String(contentsOf: myURL, encoding: .utf8) webview.loadHTMLString(myHTMLString, baseURL: nil) } catch { // 可以在这里添加错误处理逻辑,比如打印错误信息 print("读取HTML内容失败:\(error)") }
另外给你个额外的小建议:为了彻底避免渲染时的编码问题,你可以给HTML字符串手动加上编码声明的头部,双重保障更稳妥:
do { let rawHTML = try String(contentsOf: myURL, encoding: .utf8) // 包裹带编码声明的HTML结构 let formattedHTML = """ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> \(rawHTML) </body> </html> """ webview.loadHTMLString(formattedHTML, baseURL: nil) } catch { print("读取HTML失败:\(error)") }
内容的提问来源于stack exchange,提问作者objectively C
相关产品推荐
相关产品推荐

