問(wèn) 題
如何實(shí)現(xiàn)UTF8頁(yè)面提交數(shù)據(jù)到GB2312頁(yè)面不出現(xiàn)亂碼呢?
[詳細(xì)描述]提交頁(yè)面是UTF8編碼,搜索頁(yè)面是GB2312編碼,要求能正常搜索到中文,不出現(xiàn)亂碼。 相關(guān)附件:
問(wèn)題補(bǔ)充:

提問(wèn)者:小米米(級(jí)別:黔小學(xué)生) 懸賞分:0分 回答數(shù):1 瀏覽數(shù): 日期:2013/10/5 19:34:55
目前沒(méi)有回答!    
最佳答案 此答案由提問(wèn)者自己選擇,并不代表本站的觀點(diǎn)。
贊成[] 反對(duì)[] 評(píng)論
回答者:(級(jí)別:)日期:
提問(wèn)者對(duì)該答案的評(píng)價(jià):
 

一個(gè)UTF8頁(yè)面需要POST數(shù)據(jù)到GB2312頁(yè)面,這時(shí)中文的編碼是按照UTF8提交過(guò)去的,GB2312頁(yè)面無(wú)法接收。如何實(shí)現(xiàn),網(wǎng)絡(luò)搜索了一種很不錯(cuò)的方法,但有缺陷,這里一一說(shuō)起。

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

2、這時(shí)可以在提交時(shí)觸發(fā)JS,document.charset=’GB2312′;,用這段代碼設(shè)置當(dāng)前頁(yè)面編碼為GB2312。到這里看似很完美了,但還一個(gè)問(wèn)題,就是觸發(fā)這個(gè)代碼后,當(dāng)前頁(yè)面刷新之后會(huì)亂碼,這是因?yàn)槟銊偛鸥淖兞水?dāng)前頁(yè)面的編碼。

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

4、網(wǎng)上的介紹最多到這步,但是我卻發(fā)現(xiàn),這樣就步入了一個(gè)死循環(huán),因?yàn)榈?步已經(jīng)改變了編碼,您在當(dāng)前頁(yè)面不管怎樣刷新,還是改變后的編碼,所以一定要重設(shè)這個(gè)編碼才行,代碼就是這樣的。
if(isIE && document.charset!=”utf-8″){
document.charset=’utf-8′;
location.reload(false);}


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

設(shè)定FORM的accept-charset,讓非IE瀏覽器直接提交編碼后的數(shù)據(jù)到其他頁(yè)面

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


【參考文獻(xiàn)】:網(wǎng)絡(luò)資料
回答者:貴州007 (級(jí)別:黔小學(xué)生) 日期:2013/10/5 20:14:01

贊成[0]反對(duì)[0]評(píng)論 
我來(lái)回答
內(nèi) 容:
驗(yàn)證碼:
 看不清楚?請(qǐng)點(diǎn)擊刷新 看不清楚?請(qǐng)點(diǎn)擊驗(yàn)證碼刷新
參考文獻(xiàn):
 
附 件:
 >>上傳附件 |

- 如果您的回答內(nèi)容參照了其他文獻(xiàn)資料,就請(qǐng)標(biāo)明其出處;

- 如有知識(shí)產(chǎn)權(quán)等糾紛,由回答者本人承擔(dān)相應(yīng)法律責(zé)任。

提示:請(qǐng)先登陸后提交回答!