問 題
如何實現UTF8頁面提交數據到GB2312頁面不出現亂碼呢?
[詳細描述]提交頁面是UTF8編碼,搜索頁面是GB2312編碼,要求能正常搜索到中文,不出現亂碼。 相關附件:
問題補充:

提問者:小米米(級別:黔小學生) 懸賞分:0分 回答數:1 瀏覽數: 日期:2013/10/5 19:34:55
目前沒有回答!    
最佳答案 此答案由提問者自己選擇,并不代表本站的觀點。
贊成[] 反對[] 評論
回答者:(級別:)日期:
提問者對該答案的評價:
 

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

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

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

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

4、網上的介紹最多到這步,但是我卻發(fā)現,這樣就步入了一個死循環(huán),因為第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瀏覽器直接提交編碼后的數據到其他頁面

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


【參考文獻】:網絡資料
回答者:貴州007 (級別:黔小學生) 日期:2013/10/5 20:14:01

贊成[0]反對[0]評論 
我來回答
內 容:
驗證碼:
 看不清楚?請點擊刷新 看不清楚?請點擊驗證碼刷新
參考文獻:
 
附 件:
 >>上傳附件 |

- 如果您的回答內容參照了其他文獻資料,就請標明其出處;

- 如有知識產權等糾紛,由回答者本人承擔相應法律責任。

提示:請先登陸后提交回答!