|
|
一個(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è)編碼才行,代碼就是這樣的。
設(shè)定FORM的accept-charset,讓非IE瀏覽器直接提交編碼后的數(shù)據(jù)到其他頁(yè)面 |
回答者:貴州007 (級(jí)別:黔小學(xué)生) 日期:2013/10/5 20:14:01 |
贊成[0] ┆ 反對(duì)[0] ┆ 評(píng)論 |