大連網(wǎng)絡(luò)公司在做一個客戶咨詢留言的頁面,要發(fā)送到客戶郵箱,但今天在測試時發(fā)現(xiàn),通過
<form action="…" method="post" id="form1" target="_blank" name="form1">
…
</form>
這種方法提交表單, 然后在我的站點下獲取表單后,獲取的數(shù)據(jù)都是亂碼,感覺很奇怪?
分析提交表單到郵箱數(shù)據(jù)亂碼的原因是什么呢?
大連網(wǎng)站建設(shè)在后臺獲取數(shù)據(jù)頁面里進(jìn)行了utf-8轉(zhuǎn)成gb2312的轉(zhuǎn)換,但是結(jié)果仍然是亂碼。
我想到了抓包工具.分析了下.發(fā)現(xiàn)了
Accept-Encoding 這么一個代碼..
于是BAIDU了下, .
原來郵箱對post的數(shù)據(jù)進(jìn)行了Gzip壓縮.
貌似.NET里面有對Gzip解壓的類。
仔細(xì)回想下,我這種提交時方式相當(dāng)于在不同的編碼方式下提交表單(因為Accept-Encoding 也是種編碼方式)
在vs2008里的<form>標(biāo)簽下敲了下回車 發(fā)現(xiàn)了一個屬性.accept-charset
這個屬性可以實現(xiàn)在不同的編碼頁面下提交表單.
<form action="result.aspx" accept-charset="utf-8" method="post" id="form1" target="_blank" name="form1">
…
</form>
在IE下還是會有亂碼,上面這種寫法是W3C標(biāo)準(zhǔn)的寫法,在符合W3C標(biāo)準(zhǔn)的瀏覽器下不會出現(xiàn)亂碼
IE下這樣寫
<form action="result.aspx" accept-charset="utf-8" onsubmit="document.charset = 'utf-8';" method="post" id="form1" target="_blank" name="form1">
…
</form>
再次測試發(fā)送郵件,測試成功!
掃一掃
關(guān)注新圖聞科技
全國咨詢熱線
186-0984-0880