gpt4 book ai didi

iphone - 如何更改 UIWebView 中的字符编码?

转载 作者:IT王子 更新时间:2023-10-29 08:04:01 26 4
gpt4 key购买 nike

问题总结:在iOS上用UIWebView浏览没有明确指定正确字符编码的非英文网站时,页面无法正确显示。

详细解释:由于UIWebView中的loadRequest:方法会使用web服务器发送的charset header中指定的编码或者HTML meta标签中写入的charset , 并且在没有指定字符集时默认为iso-8859-1(好吧,我对此不太确定),这会导致非英文网站无法正常显示。

我已经尝试通过 Google 寻找一种方法来更改 UIWebView 使用的字符集,但唯一的方法是使用 loadData:MIMEType:textEncodingName:baseURL: 方法来指定编码名称。

但是,使用 loadData:MIMEType:textEncodingName:baseURL: + NSURLConnection 代替 loadRequest: 并不是一个好主意,因为 UIWebView 不会调用委托(delegate)方法 webView:shouldStartLoadWithRequest:navigationType: 用于框架,即使我们找到了在 UIWebView 加载框架时获得通知的方法,我们也无法调用 loadData:MIMEType:textEncodingName:baseURL: 加载框架内容,因为如果我们这样做,它会将框架加载为外部页面。

此外,我曾尝试使用 javascript hack,但似乎该属性是只读的,无法更改。

[webView stringByEvaluatingJavaScriptFromString:@"document.characterSet='utf-8';"];  

另一种解决方法是在 HTML 中插入一个元标记,并要求 UIWebView 加载修改后的代码,但上面提到的框架问题也适用于此。

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

问题:是否有更好的解决方案可以更改 UIWebView 中加载的网页中的字符编码,并正确处理帧?

最佳答案

您可以通过手动加载 HTML,修改它,然后将修改后的内容加载到 UIWebView 中来完成此操作。

  • 手动将不包含元标记的页面中的 HTML 加载到字符串中(例如使用 NSURLConnection)
  • 使用字符串操作,将适当的编码元标记插入到手动加载的 HTML 中
  • 使用 loadHTMLString:
  • 将 Web View 中的 HTML 设置为修改后的字符串

现在,这对于不包含链接的网页来说效果很好。如果它包含链接,那么你会发现当他们点击一个链接后,新的页面不会有你修改的地方。因此,您需要手动拦截所有点击。以下是您可以如何做到这一点:

关于iphone - 如何更改 UIWebView 中的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com