今天公司的做web同事遇見一個問題,大概描述如下:
本公司的web頁面為了支援國際化全部選擇使用utf-8編碼方式,由於客戶需求需要iframe客戶的一個頁面,
客戶頁面的編碼是gbk,但是沒有charset聲明。
這樣就造成了我們iframe客戶的頁面時,因為我們的charset聲明為utf-8且iframe裡的頁面沒有編碼聲明造成iframe的內容都成了亂碼。我們的編碼方式是不能變的,客戶也不會改變他們當前頁面的編碼方式同時也不能去添加一個charset聲明(很不正規,不過沒辦法,客戶是上帝)。
絞盡腦汁的想了半天終於想到了一個辦法:
添加一個中間頁面,這個頁面顯示的聲明為客戶頁面的編碼類別型。這樣客戶頁面的編碼類別型就從中間頁繼承下去了,不會出現亂碼了。
假設有 最終頁面為: ERR.htm
<html><head><meta http-equiv=Content-Type content=texthtml; charset=utf-8 ></head><body>首頁,編碼為utf-8,明確指定了編碼類別型。<iframe src="目標頁.htm" mce_src="目標頁.htm" width="100%" height="100%" /></body></html>
假設有 客戶頁面為 :目標頁.htm
<html><head></head><body>目標頁面,編碼為GBK,但是沒有指明編碼類別型。</body></html>
這樣肯定是會顯示亂碼的。如果修改成這樣:
OK.htm
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>首頁,編碼為utf-8,明確指定了編碼類別型。<iframe src="中間頁.htm" mce_src="中間頁.htm" width="100%" height="100%" /></body></html>
中間頁.htm
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gbk" /></head><body>中間頁,編碼為gbk,明確指定了編碼類別型。協助目標頁確定編碼<iframe src="目標頁.htm" mce_src="目標頁.htm" width="100%" height="100%" /></body></html>
目標頁.htm
<html><head></head><body>目標頁面,編碼為GBK,但是沒有指明編碼類別型。</body></html>
就能解決這個問題了,當然你應該有更好。希望不吝賜教
------------------------------------------------------------------------------------------------------------------------------
6樓的兄弟 luxin88 發評論說可以在iframe裡加入charset,大家可以試試。