如何解決Form表單亂碼問題
2012/11/29 14:57:07

  網(wǎng)站程序中的Form表單,是重要的組成內(nèi)容之一,很多時(shí)候,F(xiàn)orm表單會(huì)出現(xiàn)亂碼的現(xiàn)象,會(huì)給網(wǎng)站造成一定的困擾。如何解決亂碼的問題?
  JSP和Servlet的六種中文亂碼處理方法
  一、表單提交時(shí)出現(xiàn)亂碼:
  在進(jìn)行表單提交的時(shí)候,經(jīng)常提交一些中文,自然就避免不了出現(xiàn)中文亂碼的情況,對(duì)于表單來說有兩種提交方式:get和post提交方式。所以請(qǐng)求的時(shí)候便有g(shù)et請(qǐng)求和post請(qǐng)求。每種方式都有著不同的解決方法,之所以出現(xiàn)亂碼,原因就在于get請(qǐng)求時(shí),其傳遞給服務(wù)器的數(shù)據(jù)是附加在URL地址之后的;而post的請(qǐng)求時(shí),其傳遞給服務(wù)器的數(shù)據(jù)是作為請(qǐng)求體的一部分傳遞給服務(wù)器。這也就導(dǎo)致了對(duì)它們所產(chǎn)生的亂碼的處理方式是不同的。
  1、客戶端的get請(qǐng)求
  對(duì)于不同的請(qǐng)求方式,解決亂碼的問題也是不一樣的,對(duì)于客戶端的get請(qǐng)求來說,服務(wù)器端處理要想不出現(xiàn)亂碼,解決這個(gè)問題稍微復(fù)雜一些,需要用到String類型的構(gòu)造函數(shù),其中的一個(gè)構(gòu)造函數(shù)就是用指定的編碼方式去解碼,一般都用“UTF-8”的方式。只要在服務(wù)器端將請(qǐng)求得到的參數(shù)重新構(gòu)造成一個(gè)字符串就行了。
  經(jīng)過構(gòu)造之后,客戶端輸入中文,且表單時(shí)get請(qǐng)求的情況下,str就變成了中文了。
  2、客戶端的post請(qǐng)求
  對(duì)于客戶端的post請(qǐng)求來說,處理亂碼的問題就比較簡(jiǎn)單了,因?yàn)檎?qǐng)求的數(shù)據(jù)時(shí)作為請(qǐng)求體的一部分傳遞給服務(wù)器的,所以只要修改請(qǐng)求內(nèi)的編碼就行了。只要在服務(wù)器端的最開始處將請(qǐng)求的數(shù)據(jù)設(shè)置為“UTF-8”就行了,輸入如下語句:request. setCharacterEncoding(“UTF-8”);這樣用戶在服務(wù)器端獲取到的中文數(shù)據(jù)就不再是亂碼了。 
  二、超鏈接時(shí)出現(xiàn)亂碼(低版本瀏覽器不行IE6)
  在Web開發(fā)中,挺多的時(shí)候都是通過超鏈接去傳遞中文參數(shù)的,這也會(huì)導(dǎo)致在顯示的時(shí)候也會(huì)出現(xiàn)亂碼,對(duì)于超鏈接來說,它實(shí)際上是向服務(wù)器端發(fā)送了一個(gè)請(qǐng)求,而它發(fā)出的請(qǐng)求是屬于get請(qǐng)求,所以對(duì)于超鏈接的亂碼來說,它處理亂碼的方式和表單的get請(qǐng)求出現(xiàn)亂碼的方式是一樣的。
  三、重定向時(shí)出現(xiàn)亂碼(低版本瀏覽器不行IE6)
  有時(shí)寫上response的sendRedirect方法進(jìn)行重定向時(shí)也會(huì)出現(xiàn)亂碼,重定向時(shí)實(shí)際上也是向服務(wù)器發(fā)送了一個(gè)請(qǐng)求,所以解決亂碼的方法和和上面是一樣的。
  四、瀏覽器版本低導(dǎo)致的亂碼
  上網(wǎng)的時(shí)候,有時(shí)提交的一些信息在地址欄顯示的是“%2C%C6%CC%C6”的字樣,其實(shí)這都是防止出現(xiàn)亂碼進(jìn)行的解決方案,如果你的瀏覽器是IE6或以下版本,則我們的第二種情況和第三種情況會(huì)出現(xiàn)亂碼(尤其是當(dāng)中文是奇數(shù)的時(shí)候),這就不好使了所以我們必須采用另一種比較實(shí)際的作法:
  在java.net包中提供了URLEncoder類和URLDcoder類,這兩個(gè)類又分別提供了encode和decode兩個(gè)靜態(tài)方法,分別用于進(jìn)行編碼和解碼。我們將要傳遞的中文參數(shù)進(jìn)行編碼之后,在傳遞給服務(wù)器,服務(wù)器解碼之后,就可以顯示中文了。
  進(jìn)行編碼:URLEncoder.encode(stuname,”UTF-8”)
  傳遞給服務(wù)器:<a href=”/1.jsp?stuname<%=stuname%>”>傳遞</a>
  進(jìn)行解碼:URLDecoder.decode(stuname,”UTF-8”) 
  五、返回瀏覽器顯示的亂碼
  在Servlet編程中,經(jīng)常需要通過response對(duì)象將一些信息返回給瀏覽器,給我們的客戶端,而我們?cè)诜?wù)器端顯示的中文,但是響應(yīng)給客戶端瀏覽器卻是亂碼,這主要是由于response對(duì)象的getWriter()方法返回的PrintWriter對(duì)象默認(rèn)使用“ISO-8859-1”字符集編碼進(jìn)行Unicode字符串到字節(jié)數(shù)組的轉(zhuǎn)換,由于ISO8859-1字符集中根本就沒有包含中文字符,所以Java在進(jìn)行轉(zhuǎn)換的時(shí)候會(huì)將無效的字符編碼輸出給客

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 极品唯美女同互摸互添| 美女黄18以下禁止观看| 国产高清在线精品一区| 一级做一级爱a做片性视频视频| 日韩高清欧美精品亚洲| 亚洲欧洲在线播放| 狠狠躁天天躁无码中文字幕| 向日葵视频app免费下载| 青青草原精品99久久精品66| 国产片**aa毛片视频| 91精品国产网曝事件门| 女人与公拘交酡过程高清视频| 中文字幕无线码一区二区| 日韩精品专区在线影院重磅 | 91制片厂制作传媒免费版樱花 | 亚洲日韩中文字幕无码一区| 玩弄CHINESE丰满人妻VIDEOS| 啊!摁摁~啊!用力~快点视频免费| 里番acg全彩本子在线观看| 国产换爱交换乱理伦片| 香蕉精品视频在线观看| 在线免费黄色网址| jizz国产精品网站| 性xxxx黑人与亚洲| 中文字幕无线码免费人妻| 日本无卡码一区二区三区 | 久久精品国产只有精品2020| 欧美亚洲另类色国产综合| 亚洲欧美日韩中文在线| 激情按摩系列片AAAA| 免费看AV毛片一区二区三区| 精品精品国产欧美在线观看| 国产一区二区三区内射高清| 里番acg里番龙| 国产做无码视频在线观看浪潮 | 亚洲另类欧美综合久久图片区| 欧美视频久久久| 亚洲美女视频网址| 狠狠噜天天噜日日噜视频麻豆| 免费a级毛片无码a∨性按摩| 精品久久久久久久久中文字幕|