從gb2312頁面提交表單到utf-8頁面

利用

標籤的“accept-charset”屬性,在不同編碼的頁面間提交表單。 accept-charset 屬性介紹 accept-charset 屬性規定服務器處理表單數據所接受的字符集,允許您指定一系列字符集,服務器必須支持這些字符集,從而得以正確解釋表單中的數據。該屬性的值是用引號包含字符集名稱列表。如果可接受字符集與用戶所使用的字符即不相匹配的話,瀏覽器可以選擇忽略表單或是將該表單區別對待。此屬性的默認值是 "unknown",表示表單的字符集與包含表單的文檔的字符集相同。除了 Internet Explorer,accept-charset 屬性得到幾乎所有瀏覽器的支持。 問題背景: 兩個應用編碼不同,一個是GBK編碼,另一個是UTF-8編碼。現在要在GBK編碼的應用裏使用表單向UTF-8編碼的應用裏提交數據,很顯然,如果不做特殊處理的話,會出現亂碼。 解決方案: 當然了,可以自己使用ICONV或者MB擴展來轉換編碼,但這不是我們要的。 在W3裏介紹了一個不太常見的屬性:accept-charset,用它可以完成我們的需求。 在GBK編碼的頁面裏編寫如下代碼:
...

如此的代碼在Firefox等正常的瀏覽器下沒有任何問題,但是遇到IE這個變態瀏覽器就不靈光了,我們還得用點不入流的手段Hack一下:

...

再比如我們一個utf-8頁面向一個GB2312的頁面提交表單,我們可以在utf-8的頁面中修改form的屬性

...

[轉自:http://www.ban102.com.cn/article/detail.asp?id=4314] 後補: 問題的描述:從gb2312進行form(js輸出的表單)的post到utf-8之後,點ie瀏覽器的後退按鈕,gb2312的頁面會出現亂碼。 問題的原因:ie的處理本來是特殊的,然後再退回來,頁面的編碼變成utf-8了。大家都知道點後退,頁面被緩存了,只有js被重新執行。如果那個表單正好是js輸出的那就有問題了。js文件的編碼也要指定(特別是兩類編碼的文件相互調用/引用的時候)。 解決的方法:第一步:在gb2312的頁面,對引入的js中,添加編碼設置(主要解決ie6的問題)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章