問題概要:在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