AJAX下Post表單(解決中文亂碼問題)

2021-04-06 10:53:30 字數 576 閱讀 1237

產生亂碼的原因

用xmlhttp物件post表單的時候,是預設的用utf-8字元來傳送的。如果你的網頁本來就是用的utf-8編碼的話,那麼接收到的資料是正常的;如果你的網頁編碼是gb2312的話,問題就來了,post過來的資料是utf-8,而你整個站點是用gb2312來顯示,那麼所有的中文字元將全部變成亂碼。

解決的方法

開始時候我有點偏激,一味的想改變xmlhttp物件post表單的傳送方式,使它以gb2312來傳送,完全找不到門路。後來經過論壇的朋友提醒,在後台接收資料時把編碼轉換,效果難道不是一樣麼。

後台語言如果是php,用 iconv( "utf-8", "gb2312" , $_post["post"]) 這個函式轉換一下,輕鬆解決。至於asp或其他後台語言的話,我並不熟悉,原理是一樣的,在接收到資料後先轉換編碼再使用。

ps:xmlhttp物件post表單時,記得要增加2個表頭設定^_^

xmlobj.open ('post',url,true);

xmlobj.setrequestheader("content-length",post.length);

xmlobj.send (post);

JSP解決表單post方式提交時的中文亂碼問題

設定請求引數的編碼對於post請求,若其請求引數包含中文字元,那麼我們只需在解析請求引數前加一句如下的 即可。需要注意的是,這種方式對 get請求起不到任何作用。此外,由於我們對請求已經重新編碼,所以已經不需要使用 string類 再進行轉碼,否則畫蛇添足。最後,對於 post請求,request....

POST中文亂碼解決方案

以前,我都是自己編寫乙個filter,來實現編碼,如下 public class characterencodingfilter implements filter override public void dofilter servletrequest request,servletrespons...

POST中文亂碼解決方案

以前,我都是自己編寫乙個filter,來實現編碼,如下 1 public class characterencodingfilter implements filter 12 13 override 14 public void dofilter servletrequest request,ser...