UTF8編碼頁面提交參數登錄到GB2312編碼處理

 

一個UTF8頁面需要POST數據到GB2312頁面,這時中文的編碼是按照UTF8提交過去的,GB2312頁面無法接收。如何實現,網絡搜索了一種很不錯的方法,但有缺陷,這裏一一說起。

1、FORM標籤里加上accept-charset代碼,這個能把FORM裏的數據自動編碼成指定的字符集提交,比如在UTF8頁面提交數據到GB2312,代碼就是accept-charset=”GB2312″,但accept-charset除了IE其他瀏覽器都支持。。。

2、這時可以在提交時觸發JS,document.charset=’GB2312′;,用這段代碼設置當前頁面編碼爲GB2312。到這裏看似很完美了,但還一個問題,就是觸發這個代碼後,當前頁面刷新之後會亂碼,這是因爲你剛纔改變了當前頁面的編碼。

3、怎麼處理刷新後亂碼呢,就是要加以判斷,判斷當前頁面編碼和默認的編碼是否一致,如果不一致則刷新,if(isIE && document.charset!=”utf-8″)location.reload(false)

4、網上的介紹最多到這步,但是我卻發現,這樣就步入了一個死循環,因爲第2步已經改變了編碼,您在當前頁面不管怎樣刷新,還是改變後的編碼,所以一定要重設這個編碼才行,代碼就是這樣的。
if(isIE && document.charset!=”utf-8″){
document.charset=’utf-8′;
location.reload(false);}


代碼綜合起來如下:
判斷當前頁碼是否爲UTF8,如果不是,則設定編碼爲UTF8並刷新,避免亂碼。
var isIE=!!window.ActiveXObject;
if(isIE && document.charset!=”utf-8″){
document.charset=’utf-8′;
location.reload(false);}

設定FORM的accept-charset,讓非IE瀏覽器直接提交編碼後的數據到其他頁面

提交數據時觸發修改當前頁面編碼的JS
onsubmit=”if(isIE)document.charset=’GB2312′”


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