问题概要:在iOS上浏览未使用UIWebView显式指定正确字符编码的非英文网站时,页面无法正确显示。如何更改UIWebView中的字符编码?
详细说明:如UIWebView中的loadRequest:
方法将使用在从Web服务器或写在HTML元标记的字符集,并且默认为ISO-8859-1发送的字符集头中指定的编码(以及,我不太确定这一点),当字符集没有被指定时,这会导致非英文网站无法正常显示。
我曾尝试Google改变UIWebView使用的字符集的方法,但唯一的方法是使用loadData:MIMEType:textEncodingName:baseURL:
方法指定编码名称。
但是,不使用loadData:MIMEType:textEncodingName:baseURL:
+ NSURLConnection的,而不是一个loadRequest:
好主意,因为一个UIWebView不会调用委托方法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的改变在加载的网页的字符编码,并且帧妥善处理?
请提供您的网址这里,那么让我查一下。 – 2011-11-18 07:03:16
你有控制网页或服务器吗? – Magnus 2011-11-20 22:15:16
@magnus会太容易了;) – Till 2011-11-24 01:41:34